Tedarikçi Firma Geliştirme Kiti (VNDK), endişeleri yoktur. Tedarikçi firma/OEM'de VNDK'yı etkinleştirmek için aşağıdaki kılavuzu kullanın kullanabilirsiniz.
Sistem kitaplıkları oluşturun
Derleme sistemi, kitaplıklar dahil çeşitli nesne türleri içerir. (paylaşılan, statik veya başlık) ve ikili programlardır.
Şekil 1. Sistem kitaplıkları oluşturun.
core
kitaplıkları, sistem görüntüsünde sistem görüntüsü tarafından kullanılır. Bu kitaplıklarvendor
,vendor_available
,vndk
veyavndk-sp
kitaplık.cc_library { name: "libThatIsCore", ... }
vendor-only
(veyaproprietary
) kitaplıkları, tedarikçi imajı üzerine yazılmalıdır.cc_library { name: "libThatIsVendorOnly", proprietary: true, # or: vendor: true, # (for things in AOSP) ... }
vendor_available
kitaplıkları, tedarikçi firma görüntüsünde tedarikçi firma görüntüsü tarafından kullanılıyor. resim (core
öğesinin kopyalarını içerebilir).cc_library { name: "libThatIsVendorAvailable", vendor_available: true, ... }
vndk
kitaplıkları, sistem görüntüsünde tedarikçi firma görüntüsü tarafından kullanılır.cc_library { name: "libThatIsVndk", vendor_available: true, vndk: { enabled: true, } ... }
vndk-sp
kitaplıkları, hem tedarikçi firma görüntüsü hem de sistem görüntüsü tarafından kullanılır. yardımcı olur.cc_library { name: "libThatIsVndkSp", vendor_available: true, vndk: { enabled: true, support_system_process: true, } ... }
llndk
kitaplıkları hem sistem hem de tedarikçi firma görüntüleri tarafından kullanılır.cc_library { name: "libThatIsLlndk", llndk: { symbol_file: "libthatisllndk.map.txt" } ... }
vendor_available:true
olarak işaretlenen kitaplık oluşturulur
iki kez:
- Platform için bir kez (dolayısıyla
/system/lib
hizmetine yüklendi) - Tedarikçi firma için bir kez (dolayısıyla
/vendor/lib
veya VNDK APEX'e yüklendi)
lib'lerin tedarikçi sürümleri -D__ANDROID_VNDK__
ile oluşturulmuştur.
Gelecekteki sürümlerinde önemli ölçüde değişebilecek özel sistem bileşenleri
Android, bu işaretle devre dışı bırakılır. Ayrıca, farklı kitaplıklar
başlık grubunu (liblog
gibi) kullanabilirsiniz. Belirli bir
bir hedefin satıcı varyantı, Android.bp
dosyasında belirtilebilir
içinde:
target: { vendor: { … } }
Kod tabanı için VNDK'yı etkinleştirme
Kod tabanı için VNDK'yı etkinleştirmek üzere:
- Gerekli boyutları hesaplayarak uygunluğu belirleyin
vendor.img
vesystem.img
bölümleri. BOARD_VNDK_VERSION=current
özelliğini etkinleştir. Şunları ekleyebilirsiniz:BoardConfig.mk
veya doğrudan bununla bileşenler derleyin (örneğin,m -j BOARD_VNDK_VERSION=current MY-LIB
) tıklayın.
BOARD_VNDK_VERSION=current
etkinleştirildikten sonra derleme sistemi
aşağıdaki bağımlılık ve başlık gereksinimlerini uygular.
Bağımlılıkları yönetme
core
bileşenine bağlı bir vendor
nesnesi
vndk
içinde veya vendor
nesnesi olarak bulunmayan
aşağıdaki seçeneklerden biri kullanılarak çözülmelidir:
- Bağımlılık kaldırılabilir.
core
bileşeninin sahibivendor
isevendor_available
veyavendor
olarak işaretlenir.vndk
öğesinin temel nesnesini oluşturan bir değişiklik Google'a iletildi.
Ayrıca, core
bileşeninin
vendor
bileşeni, vendor
bileşeni yapılmalıdır
bir core
bileşenine ya da bağımlılık
bir başka yoldan kaldırılarak (örneğin, bağımlılığı kaldırarak veya
vendor
bileşenine bağımlılığınızı etkilemez).
Üstbilgileri yönet
Derleme sisteminin bunu bilmesi için genel üstbilgi bağımlılıkları kaldırılmalıdır
başlıkların -D__ANDROID_VNDK__
ile mi yoksa -D__ANDROID_VNDK__
olmadan mı oluşturulacağını belirleyin.
Örneğin, utils/StrongPointer.h
gibi libutils başlıkları
yine de başlık kitaplığı kullanılarak erişilebilir.
libutils_headers
Bazı üstbilgiler (ör. unistd.h
) artık geçişli olarak eklenememektedir
ancak yerel olarak dahil edilebilir.
Son olarak, private/android_filesystem_config.h
sitesinin herkese açık kısmı
cutils/android_filesystem_config.h
klasörüne taşındı. Yönetmek için
aşağıdakilerden birini yapın:
- Bağımlılığı kaldırın ve
Tümünü değiştirerek
private/android_filesystem_config.h
AID_*
getgrnam
/ içeren makrolar Mümkünsegetpwnam
çağrısı. Örnek:(uid_t)AID_WIFI
şu hale gelir:getpwnam("wifi")->pw_uid
.(gid_t)AID_SDCARD_R
şu hale gelir:getgrnam("sdcard_r")->gr_gid
.
private/android_filesystem_config.h
. - Sabit kodlu AIS için
cutils/android_filesystem_config.h