VNDK anlık görüntüsü, bir Android sürümü için VNDK çekirdek ve VNDK-SP kitaplıklarından oluşan bir settir.
Yalnızca system.img
için gereken karşılık gelen VNDK anlık görüntüsünü
vendor.img
.
Resmi VNDK anlık görüntüleri, Android derleme sunucusunda otomatik olarak oluşturulur.
ve Android kaynak ağacının /prebuilts/vndk
tanesine giriş yaptı. Örneğin,
VNDK anlık görüntülerini yerel olarak derleyebilirsiniz. VNDK anlık görüntüleri
kol, arm64, x86 ve x86_64 TARGET_ARCH
çeşitlerinde desteklenir.
Anlık görüntüler oluştur
Android derleme sunucusu, derleme yapıları ve VNDK anlık görüntü dosyaları oluşturur derlemenizi sağlar.
Derleme parametreleri
Derleme hedefi adı: vndk
. Derleme hedefi yapılandırması
aşağıda gösterilmiştir.
TARGET_PRODUCT |
TARGET_ARCH |
TARGET_ARCH_VARIANT |
---|---|---|
aosp_arm |
arm |
armv7-a-neon |
aosp_arm64 |
arm64 |
armv8-a |
aosp_x86 |
x86 |
x86 |
aosp_x86_64 |
x86_64 |
x86_64 |
TARGET_PRODUCT=aosp_$(TARGET_ARCH)
TARGET_BUILD_VARIANT=user
TARGET_ARCH
, Genel Sistem Görüntüsü (GSI) ile aynı hedef yaylar (arm
,arm64
,x86
,x86_64
).TARGET_ARCH_VARIANT
Snapshot v28 (Android 9) ve sonraki sürümler için yukarıda listelenen popüler yapılandırmaları içerir.
Derleme komutları
Resmi anlık görüntüler için, Android 9 ve sonraki sürümler
örnek bir hedef (vndk
) içerir:
VNDK oluşturan ve üreten vndk.mk
anlık görüntü: $DIST_DIR
. Anlık görüntü ZIP dosyası
android-vndk-$(TARGET_ARCH).zip
Örnek:
lunch aosp_TARGET_ARCH-user
make -j vndk dist [BOARD_VNDK_VERSION=current]
Android derleme sunucusu
Desteklenen tüm mimariyi derlemek için build.sh
komut dosyası
çeşitlerini seçin.
DIST_DIR=dist_dir development/vndk/snapshot/build.sh
Bir Android sürümünün VNDK anlık görüntüsü, o sürümün sürüm dalını kullanabilirsiniz.
Yerel olarak derleyin
Geliştirme sırasında komutudur.
- Desteklenen tüm artları aynı anda derlemek için aşağıdaki derleme komut dosyasını yürütün
(
build.sh
).cd $ANDROID_BUILD_TOP
development/vndk/snapshot/build.sh
- Belirli bir
TARGET_ARCH
oluşturmak için aşağıdakini yürütün komutlarının ikisine katlanır.lunch aosp_TARGET_ARCH-user
m -j vndk dist
İlgili android-vndk-$(TARGET_ARCH).zip
dosyası oluşturulur
$DIST_DIR
altında.
Anlık görüntü dosyaları
VNDK anlık görüntüsü aşağıdaki dosyaları içerir.
- VNDK-core ve VNDK-SP paylaşılan kitaplıkların satıcı varyantı.
- LL-NDK paylaşılan kitaplıklar, geriye dönük uyumlu oldukları için gerekli değildir.
- 64 bit hedefler için hem
TARGET_ARCH
hem deTARGET_2ND_ARCH
kitaplık derlendi ve dahil edildi.
- VNDK-core, VNDK-SP, LL-NDK ve VNDK-özel kitaplıkların listesi:
[vndkcore|vndksp|llndk|vndkprivate].libraries.txt
- Lisans dosyaları.
module_paths.txt
Tüm VNDK için modül yollarını kaydeder GPL projelerinin kaynakları olup olmadığını kontrol etmek için gerekli Android kaynak ağacında test edilmesini sağlayın.
Belirli bir VNDK anlık görüntüsü ZIP dosyası için
android-vndk-$(TARGET_ARCH).zip
, VNDK önceden oluşturulmuş kitaplıkları
adında ayrı dizinler halinde gruplanmış
ABI'ya göre arch-$(TARGET_ARCH)-$(TARGET_ARCH_VARIANT)
bitlik değeri. Örneğin, android-vndk-arm64.zip
için 64 bit kitaplıklar
arch-arm64-armv8-a
altına yerleştirilir ve 32 bit kitaplıklar
arch-arm-armv8-a
altına yerleştirildi. Aşağıdaki örnekte,
kol64 (TARGET_ARCH=arm64
) VNDK için dizin yapısı
anlık görüntü ZIP dosyasına kaydedin (android-vndk-arm64.zip
).
![VNDK Anlık Görüntü Dizin Yapısı](https://source.android.com/static/docs/core/architecture/images/vndk_snapshot_directory.png?authuser=1&hl=tr)
Tedarikçi anlık görüntüleri için derleme
Android 11 destekler
sağlayıcı
anlık görüntüler sağlar. Bu, kullanıcılarınızdan bağımsız olarak vendor.img
Android sürümünü belirtin. Varsayılan bir VNDK anlık görüntüsü
cihazlara yüklenebilen ve paylaşılan kitaplık dosyaları (.so
)
daha sonra çalışma zamanında tedarikçi C++ ikili programlarından bağlantı kuruldu. Diğerlerine göre
yüklemek için başlık dosyaları ve
dosyalar gibi ek yapılara
tıklayın.
Yerel bir kaynaktan bu tür yapıları (VNDK anlık görüntüsüyle birlikte) oluşturmak için aşağıdaki komutu kullanın.
VNDK_SNAPSHOT_BUILD_ARTIFACTS=true development/vndk/snapshot/build.sh
Bu komut, şunun altında android-vndk-$(TARGET_ARCH).zip
dosya oluşturur:
$DIST_DIR
. Aşağıdaki örnek, bir arm64 VNDK anlık görüntüsü ZIP dosyasıdır
nasıl oluşturabileceğinizi anlatacağım. Kalın karakterlerle gösterilen dosyalar, normal VNDK'ya yeni eklenen dosyalardır
anlık görüntü (Şekil 1'de gösterilmektedir) ve JSON dosyalarını (
cflags
) ve dışa aktarılan tüm başlık dosyaları.
android-vndk-arm64.zip ├── arch-arm64-armv8-a │ └── shared │ ├── vndk-core -> *.so files, *.json files │ └── vndk-sp -> *.so files, *.json files ├── arch-arm-armv8-a -> (same as arch-arm64-armv8-a) ├── configs -> *.libraries.txt, module_paths.txt, module_names.txt ├── include -> exported header files (*.h, *.hh, etc.) └── NOTICE_FILES -> license txt files
VNDK anlık görüntülerini yükle
VNDK anlık görüntüleri,
/prebuilts/vndk/vVER
, burada:
VER
, VNDK anlık görüntüsünün sürümüne eşit
(ilgili Android sürümünün SDK sürümünü takip eder). Örneğin,
örneğin, Android 8.1 VNDK anlık görüntüsünün 27 sürümü vardır.
Update.py komut dosyasını kullanma
update.py
komut dosyası
(/development/vndk/snapshot/update.py
),
kaynak ağacına önceden oluşturulmuş bir VNDK anlık görüntüsü ekleme. Otomatik olarak algılar
derlemelerini sağlar ve
Android.bp
gelir sağladı. Bu komut dosyası aşağıdaki görevleri yerine getirir:
/prebuilts/vndk/vVER
ürününde yeni Git dalı oluşturmak içinrepo start
kullanılır.- VNDK anlık görüntü derleme yapılarını getirir ve açar.
- Derleme dosyalarını otomatik olarak oluşturmak için
gen_buildfiles.py
komutunu çalıştırır (Android.bp
). - Önceden oluşturulmuş kitaplıkları doğrulamak için
check_gpl_license.py
komutunu çalıştırır Genel Kamu Lisansı (GPL) kapsamında lisanslı kaynaklar; geçerli kaynak ağacını kullanır. - Yeni değişiklikleri uygulamak için
git commit
kullanır.
Yerel olarak oluşturulan VNDK anlık görüntülerini kullanma
Yerel olarak oluşturulan VNDK anlık görüntülerini de kullanabilirsiniz. --local
seçeneği belirtildiğinde, update.py
komut dosyası VNDK anlık görüntüsünü getirir
belirtilen yerel dizinden (Android yerine)
derleme sunucusu) ise android-vndk-$(TARGET_ARCH).zip
dosyalarını içeren
(development/vndk/snapshot/build.sh
üzerinden) oluşturuldu. Şununla
--local
seçeneğinde, update.py
komut dosyası GPL'yi atlar
lisans kontrolü ve git commit
adım.
Sözdizimi:
python update.py VER --local local_path
Android 8.1 VNDK anlık görüntüsünü yerel derlemeyle güncellemek için örnek komut
/path/to/local/dir
içindeki yapılar:
python update.py 27 --local /path/to/local/dir
Yerel olarak oluşturulmuş VNDK anlık görüntüsünün örnek dizin yapısı:
prebuilts/vndk ├── v30 │ ├── arm64 │ │ ├── arch-arm64-armv8-a -> (prebuilt libs) │ │ ├── arch-arm-armv8-a -> (prebuilt libs) │ │ ├── configs -> (config files) │ │ ├── include -> (exported header files) │ │ └── Android.bp -> (VNDK modules with cflags) │ ├── arm -> (same as above) │ ├── x86_64 -> (same as above) │ ├── x86 -> (same as above) │ ├── common │ │ ├── NOTICE_FILES -> (license files) │ │ └── Android.bp -> (license file modules) │ └── Android.bp -> (*.libraries.30.txt modules) └── (other VNDK versions) -> (same as above). Yapılar
VNDK_SNAPSHOT_BUILD_ARTIFACTS=true
.
VNDK anlık görüntülerini yükleme
Sistem görüntüsü, derleme sırasında
BOARD_VNDK_VERSION
içindeki bilgiler,
PRODUCT_EXTRA_VNDK_VERSIONS
ve ro.vndk.version
.
Önceden oluşturulmuş VNDK'dan hangi VNDK anlık görüntülerinin yükleneceğini kontrol edebilirsiniz
anlık görüntü dizinleri (örneğin, /prebuilts/vndk/v29
veya
/prebuilts/vndk/v30
) aşağıdaki seçeneklerden birini kullanabilirsiniz.
- 1. Seçenek:
BOARD_VNDK_VERSION
. Şunu kullanın: mevcut tedarikçi modüllerini oluşturmak için anlık görüntü modüllerini Satıcı modülleri için gerekli olan anlık görüntü modüllerini - 2. Seçenek:
PRODUCT_EXTRA_VNDK_VERSIONS
. Geçerli satıcı modüllerinden bağımsız olarak VNDK anlık görüntü modüllerini yükleyin. Bu işlem, Birini başka bir kanala bağlamadanPRODUCT_EXTRA_VNDK_VERSIONS
modüllerini de oluşturabilirsiniz.
BOARD_VNDK_VERSION olarak ayarla
BOARD_VNDK_VERSION
, tedarikçi firmanın mevcut VNDK sürümünü gösterir
gerekli olduğunu açıkladık. BOARD_VNDK_VERSION
için
/prebuilts/vndk
dizininde mevcut VNDK anlık görüntü sürümü,
BOARD_VNDK_VERSION
içinde belirtilen VNDK anlık görüntüsü yüklendi. Eğer
Dizinde VNDK anlık görüntüsü bulunmuyor. Bir yapı hatası oluşur.
BOARD_VNDK_VERSION
tanımlanması, VNDK modüllerinin de
yüklendi. Şurada tanımlanan VNDK anlık görüntü sürümüne sahip tedarikçi modülleri bağlantısı:
Derleme zamanında BOARD_VNDK_VERSION
(bu, mevcut derlemeyi oluşturmaz)
VNDK modüllerinde değiştirme). Şuradan tam kaynak ağacını indirirken:
depolanıyorsa hem sistem hem de tedarikçi kaynakları aynı Android'i temel alır
kullanabilirsiniz.
Ayarla: PRODUCT_Extra_VNDK_VERSIONS
PRODUCT_EXTRA_VNDK_VERSIONS
, kontrol edilecek ek VNDK sürümlerini listeler
yüklendi. Normalde mevcut durum için bir VNDK anlık görüntüsünün olması yeterlidir
satıcı bölümü Ancak bazı durumlarda,
anlık görüntülere yer verir. Örneğin, GSI'nın kullandığı birden fazla anlık görüntü
ve tek bir sistem görüntüsüne sahip birden fazla tedarikçi firma sürümünü desteklemelidir. Ayarlayarak
PRODUCT_EXTRA_VNDK_VERSIONS
, VNDK anlık görüntüsünü yükleyebilirsiniz
modüllerini (BOARD_VNDK_VERSION
) VNDK sürümüne ek olarak sunar.
PRODUCT_EXTRA_VNDK_VERSIONS
için belirli bir sürüm listesi varsa
derleme sistemi, tablodaki sürüm listesinin önceden oluşturulmuş anlık görüntülerini
prebuilts/vndk
dizini. Derleme sistemi listelenen tüm
bu anlık görüntü dosyalarını her bir VNDK APEX'e yükler
(out/target/product/$(TARGET_DEVICE)/system_ext/apex/com.android.vndk.vVER
Eksik sürümler yapı hatası oluşturur.
VNDK modülleri, derleme sırasında tedarikçi modülleriyle bağlantı oluşturmaz, ancak
Tedarikçi bölümündeki tedarikçi modüller için
yüklü VNDK sürümleri. PRODUCT_EXTRA_VNDK_VERSIONS
geçerli
yalnızca BOARD_VNDK_VERSION
tanımlıysa.
PLATFORM_VNDK_VERSION
PLATFORM_VNDK_VERSION
, geçerli VNDK için VNDK sürümünü tanımlar
modüllerin kullanılabilmesidir. Değer otomatik olarak ayarlanır:
- Yayınlamadan önce
PLATFORM_VNDK_VERSION
şu şekilde ayarlandı:PLATFORM_VERSION_CODENAME
. - Sürümde
PLATFORM_SDK_VERSION
, şuraya kopyalanır:PLATFORM_VNDK_VERSION
.
Android sürümü yayınlandıktan sonra, mevcut VNDK kitaplıkları
VNDK APEX'e yüklendi
(/system/apex/com.android.vndk.vVER
), burada
VER
, şurada depolanan sürümdür:
PLATFORM_VNDK_VERSION
.
BOARD_VNDK_VERSION
, current
olarak ayarlandığında
PLATFORM_VNDK_VERSION
ro.vndk.version
içinde depolanıyor,
Aksi takdirde BOARD_VNDK_VERSION
,
ro.vndk.version
. PLATFORM_VNDK_VERSION
şuna ayarlandı:
Android kullanıma sunulduğunda SDK sürümü; yayınlanmadan önce, alfa-sayısal Android
kod adı PLATFORM_VNDK_VERSION
için kullanılır.
VNDK sürüm ayarlarının özeti
Tabloda, VNDK sürüm ayarları özetlenmektedir.
Tedarikçi Derleme |
Pano Sürüm |
SDK Sürümü |
Platform Sürümü |
Sürüm Mülkü |
Dizini Yükle |
---|---|---|---|---|---|
Mevcut VNDK modülleri | current |
Önce | CODE_NAME |
CODE_NAME |
/system/apex/com.android.vndk.vCODE_NAME |
Sonra | SDK_VER |
SDK_VER |
/system/apex/com.android.vndk.vSDK_VER |
||
Önceden oluşturulmuş anlık görüntü modülleri | Anlık görüntü için VNDK_VER |
Önce veya Sonra | CODE_NAME veya SDK_VER |
VNDK_VER |
/system_ext/apex/com.android.vndk.vVNDK_VER |
- Kart sürümü (
BOARD_VNDK_VERSION
). VNDK gerekir. Şu durumdacurrent
olarak ayarlayın: satıcı modülleri mevcut sistem modüllerine bağlanabilir. - Platform Sürümü (
PLATFORM_VNDK_VERSION
). Mevcut sistem modüllerinin oluşturmakta olduğu VNDK sürümü. Yalnızca şu durumlarda oluşturulur:BOARD_VNDK_VERSION
, geçerli değere eşit. - Sürüm Özelliği (
ro.vndk.version
). Özellik satıcı.img'deki ikili programların ve kitaplıkların gerektirdiği VNDK sürümünü belirten gerekir.vendor.img
konumunda depolanıyor./vendor/default.prop
.