27 Mart 2025'ten itibaren AOSP'yi derlemek ve AOSP'ye katkıda bulunmak için aosp-main yerine android-latest-release kullanmanızı öneririz. Daha fazla bilgi için AOSP'de yapılan değişiklikler başlıklı makaleyi inceleyin.
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Bu sayfada, Android 8.0 ve sonraki sürümleri çalıştıran cihazların dizin düzeni, VNDK kuralları ve ilişkili sepolicy açıklanmaktadır.
Dizin düzeni
Degenerated Directory Layout (Dönüştürülmüş Dizin Düzeni) aşağıdaki dizinlerden oluşur:
/system/lib[64], LL-NDK, VNDK ve yalnızca çerçeve kitaplıkları (LL-NDK-Private ve VNDK-SP'dekilerle aynı ada sahip bazı kitaplıklar dahil) dahil olmak üzere tüm çerçeve paylaşılan kitaplıklarını içerir.
/system/lib[64]/vndk-sp, aynı işlem HAL'leri için VNDK-SP kitaplıklarını içerir.
/vendor/lib[64], tedarikçi firma tarafından genişletilen VNDK kitaplıklarını (DXUA veya DXUX VNDK kitaplıkları), aynı işlem HAL uygulamalarını ve tedarikçi firmanın diğer paylaşılan kitaplıklarını içerir.
/vendor/lib[64]/vndk-sp, tedarikçi firma tarafından genişletilen VNDK-SP kitaplıklarını içerebilir.
Bu bölümde VNDK kurallarının kapsamlı bir listesi yer almaktadır:
Çerçeve işlemleri, SP-HAL olmayan paylaşılan kitaplıkları tedarikçi bölümlerinden yüklememelidir (Android 8.1'den itibaren katı bir şekilde uygulanır).
Tedarikçi firma işlemleri, sistem bölümünden LL-NDK, VNDK-SP ve VNDK dışındaki kitaplıkları yüklememelidir. (Android O'da katı bir şekilde uygulanmaz ancak gelecekteki bir sürümde uygulanacaktır).
Yüklenen VNDK kitaplıkları, Google tarafından tanımlanan uygun VNDK kitaplıklarının bir alt kümesi olmalıdır.
SP-HAL ve SP-HAL-Dep'nin dış bağımlılıkları LL-NDK veya Google tarafından tanımlanan VNDK-SP kitaplıklarıyla sınırlı olmalıdır.
SP-HAL paylaşılan kitaplığının bağımlılıkları, LL-NDK kitaplıkları, Google tarafından tanımlanan VNDK-SP kitaplıkları, diğer SP-HAL kitaplıkları ve/veya SP-HAL-Dep kitaplıkları olarak etiketlenebilecek diğer tedarikçi paylaşılan kitaplıklarıyla kısıtlanmalıdır.
Tedarikçi firma paylaşılan kitaplığı yalnızca AOSP kitaplığı değilse ve bağımlılıkları LL-NDK kitaplıkları, Google tarafından tanımlanan VNDK-SP kitaplıkları, SP-HAL kitaplıkları ve/veya diğer SP-HAL-Dep kitaplıklarıyla sınırlıysa SP-HAL-Dep kitaplığı olarak etiketlenebilir.
VNDK-SP bağımsız olmalıdır. libRS_internal.so, Android 8.0'da özel bir işleme tabi tutulur ancak gelecekteki bir sürümde bu konu tekrar ele alınacaktır.
Binder, soket, paylaşılan anılar, dosyalar vb. dahil ancak bunlarla sınırlı olmamak üzere HIDL dışı arayüzler üzerinden çerçeve-tedarikçi iletişimi yapılamaz.
Sistem bölümünün boyutu, uygun tüm VNDK kitaplıklarının iki kopyasını ve uygun olmayan çerçeve paylaşılan kitaplıklarının bir kopyasını barındıracak kadar büyük olmalıdır.
sepolicy
Bu bölümde açıklanan çerçeve süreçleri, sepolicies içindeki coredomain'e, satıcı süreçleri ise non-coredomain'a karşılık gelir. Örneğin, /dev/binder yalnızca coredomain'te, /dev/vndbinder ise yalnızca coredomain dışındaki yerlerde erişilebilir.
Benzer politikalar, sistem ve tedarikçi firma bölümlerindeki paylaşılan kitaplıklara erişimi kısıtlar. Aşağıdaki tabloda, farklı kategorilerdeki paylaşılan kitaplıklara erişim hakları gösterilmektedir:
Kategori
Bölüm
coredomain adresinden erişilebilir
non-coredomain adresinden erişilebilir
LL-NDK
Sistem
Y
Y
LL-NDK-Private
Sistem
Y
Y
VNDK-SP/VNDK-SP-Private
Sistem
Y
Y
VNDK-SP-Ext
Satıcı
Y
Y
VNDK
Sistem
Y
Y
VNDK-Ext
Satıcı
H
Y
FWK-ONLY
Sistem
Y
H
FWK-ONLY-RS
Sistem
Y
H
SP-HAL
Satıcı
Y
Y
SP-HAL-Dep
Satıcı
Y
Y
VND-ONLY
Satıcı
H
Y
coredomain olmayanlar bunlara dolaylı olarak erişeceğinden LL-NDK-Private ve VNDK-SP-Private'e her iki alandan da erişilebilmelidir. Benzer şekilde, SP-HAL-Dep'ye SP-HAL'den erişilebildiği için coredomain'ten erişilebilmelidir.
same_process_hal_file etiketi
Tedarikçi firma bölümünde aşağıdaki kitaplıklar bulunur. Bu kitaplıklara hem coredomain hem de coredomain olmayan kullanıcılardan erişilebilmesini sağlayın.
/vendor/lib[64]/vndk-sp'te VNDK-SP-Ext
/vendor/lib[64] veya /vendor/lib[64]/hw'te SP-HAL
/vendor/lib[64] veya /vendor/lib[64]/hw'da SP-HAL-Dep
vendor bölümündeki hiçbir şeye varsayılan olarak coredomain erişemediğinden bu dosyaları açıkça same_process_hal_file olarak etiketleyin. Tedarikçiye özgü file_contexts dosyasına aşağıdakine benzer satırlar ekleyin.
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-07-27 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-07-27 UTC."],[],[],null,["# Directories, rules, and sepolicy\n\nThis page describes the directory layout for devices running Android 8.0 and\nhigher, VNDK rules, and associated sepolicy.\n\nDirectory layout\n----------------\n\nThe *Degenerated Directory Layout* consists of the following\ndirectories:\n\n- `/system/lib[64]` contains all framework shared libraries, including LL-NDK, VNDK, and framework-only libraries (including LL-NDK-Private and some libraries with the same names as the ones in VNDK-SP).\n- `/system/lib[64]/vndk-sp` contains VNDK-SP libraries for same-process HALs.\n- `/vendor/lib[64]` contains the VNDK libraries extended by the vendor (either DXUA or DXUX VNDK libraries), same-process HAL implementations, and other vendor shared libraries.\n- `/vendor/lib[64]/vndk-sp` may contain the VNDK-SP libraries extended by the vendor.\n\nVendor modules load the VNDK libraries from `/system/lib[64]`.\n\nVNDK rules\n----------\n\nThis section provides a comprehensive list of VNDK rules:\n\n- Framework processes must not load non-SP-HAL shared libraries from vendor partitions (strictly enforced starting from Android 8.1).\n- Vendor processes must not load non-LL-NDK, non-VNDK-SP, and non-VNDK libraries from the system partition. (not strictly enforced in Android O but will be in a future release).\n| **Note**: To benefit from the framework-only OTA beyond Android 8.0, this rule must not be violated in devices launched with Android 8.0.\n- Installed VNDK libraries must be a subset of Google-defined eligible VNDK libraries.\n- The outer dependencies of SP-HAL and SP-HAL-Dep must be restricted to LL-NDK or Google-defined VNDK-SP libraries.\n - The dependencies of an SP-HAL shared library must be restricted to LL-NDK libraries, Google-defined VNDK-SP libraries, other SP-HAL libraries, and/or other vendor shared libraries that can be labeled as SP-HAL-Dep libraries.\n - A vendor shared library can be labeled as a SP-HAL-Dep library only if it is not an AOSP library and its dependencies are restricted to LL-NDK libraries, Google-defined VNDK-SP libraries, SP-HAL libraries, and/or other SP-HAL-Dep libraries.\n- VNDK-SP must be self-contained. `libRS_internal.so` gets special treatment in Android 8.0, but will be revisited in a future release.\n- No framework-vendor communication through non-HIDL interfaces, including (but not limited to) binder, sockets, shared memories, files, etc.\n- The size of the system partition must be large enough to contain two copies of all eligible VNDK libraries and a copy of ineligible framework shared libraries.\n\nsepolicy\n--------\n\nFramework processes described in this section correspond to\n`coredomain` in sepolicies while vendor processes correspond to\n`non-coredomain`. For example, `/dev/binder` can be\naccessed only in `coredomain` and `/dev/vndbinder` can be\naccessed only in non-`coredomain`.\n\nSimilar policies restrict the access to the shared libraries on system and\nvendor partitions. The following table shows the rights to access shared\nlibraries of different categories:\n\n| Category | Partition | Accessible from coredomain | Accessible from non-coredomain |\n|-------------------------|-----------|----------------------------|--------------------------------|\n| LL-NDK | System | Y | Y |\n| LL-NDK-Private | System | Y | Y |\n| VNDK-SP/VNDK-SP-Private | System | Y | Y |\n| VNDK-SP-Ext | Vendor | Y | Y |\n| VNDK | System | Y | Y |\n| VNDK-Ext | Vendor | N | Y |\n| FWK-ONLY | System | Y | N |\n| FWK-ONLY-RS | System | Y | N |\n| SP-HAL | Vendor | Y | Y |\n| SP-HAL-Dep | Vendor | Y | Y |\n| VND-ONLY | Vendor | N | Y |\n\nLL-NDK-Private and VNDK-SP-Private must be\naccessible from both domains because non-`coredomain` will\nindirectly access them. Similarly, SP-HAL-Dep must be accessible from\n`coredomain` because SP-HAL relies on it.\n\nsame_process_hal_file label\n---------------------------\n\nThe following libraries exist in the vendor partition. Make these libraries accessible from both\n`coredomain` and non-`coredomain`.\n\n- VNDK-SP-Ext in `/vendor/lib[64]/vndk-sp`\n- SP-HAL in `/vendor/lib[64]` or `/vendor/lib[64]/hw`\n- SP-HAL-Dep in `/vendor/lib[64]` or `/vendor/lib[64]/hw`\n\nExplicitly label these files as `same_process_hal_file`, because anything\nin `vendor` partition is by default not accessible to `coredomain`. Add lines similar to\nthe following to the vendor-specific `file_contexts` file. \n\n```scdoc\n/vendor/lib(64)?/hw/libMySpHal\\.so u:object_r:same_process_hal_file:s0\n/vendor/lib(64)?/vndk-sp/libBase\\.so u:object_r:same_process_hal_file:s0\n/vendor/lib(64)?/libBaseInternal\\.so u:object_r:same_process_hal_file:s0\n```"]]