bundletool
; Android Studio, Android Gradle eklentisi ve Google Play'in bir Android App Bundle oluşturmak için kullandığı temel araçtır. bundletool
, bir uygulama paketini cihazlara dağıtılan çeşitli APK'lara dönüştürebilir.
Android SDK Paketleri (ASB'ler) ve APK'ları bundletool
ile oluşturulur. Aynı zamanda bir komut satırı aracı olarak da kullanılabilir. Böylece uygulama paketleri ve SDK paketlerini kendiniz oluşturabilir ve uygulamanızın APK'larının veya çalışma zamanı etkin SDK'larınızın APK'larının Google Play sunucu tarafı derlemesini yeniden oluşturabilirsiniz.
İndir (bundletool
)
Henüz yapmadıysanız GitHub deposundan bundletool
dosyasını indirin.
Uygulama paketi oluşturma ve test etme
Android App Bundle'ınızı oluşturmak için Android Studio'yu veya bundletool
komut satırı aracını kullanabilir ve ardından bu uygulama paketinden APK oluşturmayı test edebilirsiniz.
Uygulama paketi oluşturma
Android App Bundle oluşturmak ve imzalamak için Android Studio'yu ve Android Gradle eklentisini kullanın.
Bununla birlikte, IDE kullanmak mümkün değilse (örneğin, sürekli derleme sunucusu kullandığınız için) uygulama paketinizi komut satırından oluşturabilir ve jarsigner
kullanarak da imzalayabilirsiniz.
bundletool
ile uygulama paketleri oluşturma hakkında daha fazla bilgi için Bundletool kullanarak uygulama paketi oluşturma bölümüne göz atın.
Uygulama paketinizden bir APK grubu oluşturun
Android App Bundle'ınızı oluşturduktan sonra, Google Play'in APK oluşturmak için uygulama paketini nasıl kullandığını ve bu APK'ların cihaza dağıtıldığında nasıl davrandığını test edin.
Uygulama paketinizi test etmenin iki yolu vardır:
bundletool
komut satırı aracını yerel olarak kullanma.- Bir test kanalı kullanarak Google Play üzerinden paketinizi Play Console'a yükleyin.
Bu bölümde, uygulama paketinizi yerel olarak test etmek için bundletool
uygulamasını nasıl kullanacağınız açıklanmaktadır.
bundletool
, uygulama paketinizden APK oluşturduğunda oluşturulan APK'ları, .apks
dosya uzantısını kullanan APK grup arşivi adı verilen bir kapsayıcının içine dahil eder. Uygulamanızın uygulama paketinizden desteklediği tüm cihaz yapılandırmaları için APK grubu oluşturmak için aşağıdaki gibi bundletool build-apks
komutunu kullanın:
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
APK'ları bir cihaza dağıtmak isterseniz aşağıdaki komutta gösterildiği gibi uygulamanızın imzalama bilgilerini de eklemeniz gerekir. İmzalama bilgileri belirtmezseniz bundletool
sizin için bir hata ayıklama anahtarıyla APK'larınızı imzalamaya çalışır.
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks --ks=/MyApp/keystore.jks --ks-pass=file:/MyApp/keystore.pwd --ks-key-alias=MyKeyAlias --key-pass=file:/MyApp/key.pwd
Aşağıdaki tabloda, bundletool build-apks
komutunu kullanırken ayarlayabileceğiniz çeşitli işaretler ve seçenekler ayrıntılı olarak açıklanmaktadır:
Tablo 1. bundletool build-apks
komutu için seçenekler
İşaretle | Açıklama |
---|---|
--bundle=path |
(Gerekli) Android Studio'yu kullanarak oluşturduğunuz uygulama paketinin yolunu belirtir. Daha fazla bilgi edinmek için Projenizi oluşturma başlıklı makaleyi okuyun. |
--output=path |
(Gerekli) Uygulamanızla ilgili tüm APK yapılarını içeren .apks çıktı dosyasının adını belirtir. Bu dosyadaki yapıları bir cihazda test etmek için APK'ları bağlı bir cihaza dağıtma bölümündeki adımları uygulayın.
|
--overwrite |
--output seçeneğini kullanarak belirttiğiniz yolu mevcut çıkış dosyalarının üzerine yazar. Bu işareti eklemezseniz ve çıkış dosyası zaten mevcutsa bir yapı hatası alırsınız.
|
--aapt2=path |
AAPT2'ye giden özel bir yolu belirtir.
Varsayılan olarak bundletool kendi AAPT2 sürümünü içerir.
|
--ks=path |
(İsteğe bağlı) APK'ları imzalamak için kullanılan dağıtım anahtar deposunun yolunu belirtir. Bu işareti eklemezseniz bundletool , APK'larınızı bir hata ayıklama imzalama anahtarıyla imzalamaya çalışır.
|
--ks-pass=pass:password veya --ks-pass=file:/path/to/file |
Anahtar deposu şifrenizi belirtir. Düz metin olarak bir şifre belirtirseniz pass: ile nitelendirin.
Yolu şifreyi içeren bir dosyaya iletirseniz dosyayı file: ile nitelendirin. --ks-pass belirtmeden --ks işaretini kullanarak bir anahtar deposu belirtirseniz bundletool , komut satırından şifre girmenizi ister.
|
--ks-key-alias=alias |
Kullanmak istediğiniz imzalama anahtarının takma adını belirtir. |
--key-pass=pass:password veya --key-pass=file:/path/to/file |
İmzalama anahtarının şifresini belirtir. Düz metin olarak bir şifre belirtirseniz pass: ile nitelendirin.
Yolu şifreyi içeren bir dosyaya iletirseniz dosyayı file: ile nitelendirin. Bu şifre, anahtar deposunun şifresiyle aynıysa bu işareti atlayabilirsiniz. |
--connected-device |
bundletool uygulamasına, bağlı bir cihazın yapılandırmasını hedefleyen APK'lar oluşturma talimatı verir. Bu işareti eklemezseniz bundletool , uygulamanızın desteklediği tüm cihaz yapılandırmaları için APK'lar oluşturur.
|
--device-id=serial-number |
Birden fazla bağlı cihazınız varsa uygulamanızı dağıtmak istediğiniz cihazın seri kimliğini belirtmek için bu işareti kullanın. |
--device-spec=spec_json |
Hedeflemek istediğiniz cihaz yapılandırmasını belirten .json dosyasının yolunu sağlar. Daha fazla bilgi edinmek için Cihaz spesifikasyonu JSON dosyaları oluşturma ve kullanma bölümüne gidin.
|
--mode=universal |
Modu universal olarak ayarlar. bundletool ürününün, uygulamanızın tüm kodlarını ve kaynaklarını içeren tek bir APK oluşturmasını istiyorsanız bu seçeneği kullanın. Bu şekilde APK'nın, uygulamanızın desteklediği tüm cihaz yapılandırmalarıyla uyumlu olmasını sağlayın.
Not: Bu APK'ların belirli bir cihaz yapılandırması için optimize edilmişlerden daha büyük olduğunu unutmayın. Bununla birlikte, uygulamanızı birden fazla cihaz yapılandırmasında test etmek isteyen dahili test kullanıcılarıyla paylaşılması daha kolaydır. |
--local-testing
|
Uygulama paketinizi yerel test için etkinleştirir.
Yerel testler, Google Play sunucularına yükleme yapmaya gerek kalmadan hızlı ve yinelenen test döngülerine imkan tanır.
|
APK'ları bağlı bir cihaza dağıtma
Bir APK grubu oluşturduktan sonra bundletool
, bu kümeden doğru APK kombinasyonunu bağlı bir cihaza dağıtabilir.
Örneğin, Android 5.0 (API düzeyi 21) veya sonraki sürümleri çalıştıran bağlı bir cihazınız varsa bundletool
, uygulamanızı bu cihazda çalıştırmak için gereken temel APK, özellik modülü APK'ları ve yapılandırma APK'larını aktarır. Alternatif olarak, bağlı cihazınız Android 4.4 (API seviyesi 20) veya önceki bir sürümü çalıştırıyorsa bundletool
, cihazınıza dağıtmak için uyumlu bir çoklu APK arar.
Uygulamanızı bir APK grubundan dağıtmak için install-apks
komutunu kullanın ve aşağıdaki komutta gösterildiği gibi --apks=/path/to/apks
işaretini kullanarak APK kümesinin yolunu belirtin. Bağlı birden fazla cihazınız varsa --device-id=serial-id
işaretini ekleyerek bir hedef cihaz belirtin.
bundletool install-apks --apks=/MyApp/my_app.apks
Cihaza özel APK grubu oluşturma
Uygulamanızın desteklediği tüm cihaz yapılandırmaları için bir APK grubu oluşturmak istemiyorsanız aşağıdaki komutta gösterildiği gibi --connected-device
seçeneğini kullanarak yalnızca bağlı bir cihazın yapılandırmasını hedefleyen APK'lar oluşturabilirsiniz.
Bağlı birden fazla cihazınız varsa --device-id=serial-id
işaretini ekleyerek bir hedef cihaz belirtin.
bundletool build-apks --connected-device --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Cihaz spesifikasyonu JSON dosyaları oluşturma ve kullanma
bundletool
, JSON dosyasıyla belirtilen bir cihaz yapılandırmasını hedefleyen APK kümesi oluşturabilir. Öncelikle bağlı bir cihaz için JSON dosyası oluşturmak üzere aşağıdaki komutu çalıştırın:
bundletool get-device-spec --output=/tmp/device-spec.json
bundletool
, cihazın dizininde bir JSON dosyası oluşturur. Ardından, yalnızca ilgili JSON dosyasında açıklanan yapılandırmayı hedefleyen bir APK kümesi oluşturmak için dosyayı bundletool
hizmetine aktarabilirsiniz. Bunun için aşağıdaki adımları uygulayın:
bundletool build-apks --device-spec=/MyApp/pixel2.json --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Cihaz spesifikasyonu JSON dosyasını manuel olarak oluşturma
Hedeflenen APK grubu oluşturmak istediğiniz cihaza erişiminiz yoksa (örneğin, uygulamanızı elinizde olmayan bir cihazla denemek isterseniz) aşağıdaki biçimi kullanarak manuel olarak bir JSON dosyası oluşturabilirsiniz:
{
"supportedAbis": ["arm64-v8a", "armeabi-v7a"],
"supportedLocales": ["en", "fr"],
"screenDensity": 640,
"sdkVersion": 27
}
Ardından bu JSON'u, önceki bölümde açıklandığı gibi bundle extract-apks
komutuna geçirebilirsiniz.
Mevcut bir APK grubundan cihaza özel APK'ları ayıklama
Mevcut bir APK grubunuz varsa ve bundan belirli bir cihaz yapılandırmasını hedefleyen APK'ların alt kümesini çıkarmak istiyorsanız extract-apks
komutunu kullanarak aşağıdaki gibi bir cihaz spesifikasyonu JSON'u belirtebilirsiniz:
bundletool extract-apks --apks=/MyApp/my_existing_APK_set.apks --output-dir=/MyApp/my_pixel2_APK_set.apks --device-spec=/MyApp/bundletool/pixel2.json
Bir APK grubundaki APK'ların tahmini indirme boyutlarını ölçme
Bir APK grubundaki APK'ların kablo üzerinden sıkıştırılmış olarak sunulacakları şekilde tahmini indirme boyutlarını ölçmek için get-size total
komutunu kullanın:
bundletool get-size total --apks=/MyApp/my_app.apks
Aşağıdaki işaretleri kullanarak get-size total
komutunun davranışını değiştirebilirsiniz:
Tablo 2. get-size total
komutu için seçenekler
İşaretle | Açıklama |
---|---|
--apks=path |
(Gerekli) İndirme boyutu ölçülen mevcut APK tarafından ayarlanmış dosyanın yolunu belirtir. |
--device-spec=path |
Eşleştirme için kullanmak üzere cihaz spesifikasyon dosyasının yolunu (get-device-spec kaynağından veya manuel olarak oluşturulan) belirtir.
Bir yapılandırma kümesini değerlendirmek için kısmi bir yol belirtebilirsiniz.
|
--dimensions=dimensions
| Boyut tahminleri hesaplanırken kullanılan boyutları belirtir. Virgülle ayrılmış şu listeleri kabul eder: SDK , ABI , SCREEN_DENSITY ve LANGUAGE . Tüm boyutlarda ölçüm yapmak için ALL değerini belirtin.
|
--instant |
Yüklenebilir APK'lar yerine hazır sürüm etkin APK'ların indirme boyutunu ölçer. Varsayılan olarak bundletool , yüklenebilir APK indirme boyutlarını ölçer.
|
--modules=modules |
APK'daki modüllerin, ölçümde dikkate alınmak üzere ayarlanmış virgülle ayrılmış listesini belirtir. bundletool komutu, belirtilen grup için bağımlı tüm modülleri otomatik olarak içerir. Bu komut, varsayılan olarak ilk indirme sırasında yüklenen tüm modüllerin indirme boyutunu ölçer.
|
SDK paketi bağımlılığı olan bir uygulama paketi oluşturma (deneysel)
Android App Bundle'ınızı komut satırından bir Android SDK Bundle (ASB) bağımlılığıyla derleyebilir ve jarsigner kullanarak imzalayabilirsiniz.
Her uygulama paketi modülünde bir Modül Protokolü Arabelleği (.pb
) dosyası bulunur:
runtime_enabled_sdk_config.pb
. Bu dosya, bir uygulama paketi modülünün bağlı olduğu SDK'ların listesini içerir. Bu dosyanın tam tanımı için runtime_enabled_sdk_config.proto
dosyasını inceleyin.
SDK paketi bağımlılığı olan bir uygulama paketi oluşturmak için bundletool kullanarak uygulama paketi oluşturma bölümündeki adımları izleyin ve her bir uygulama modülünün zip dosyasına derlenmiş kod ve kaynaklarıyla bir runtime_enabled_sdk_config.pb
dosyası ekleyin.
runtime_enabled_sdk_config.pb
dosyasındaki bazı önemli alanlar:
Sertifika özeti: SDK'ların APK'larını imzalamak için kullanılan anahtara ait sertifikanın SHA-256 özetidir. Bu, Android SDK Arşivi biçimindeki
SdkMetadata.pb
dosyasındaki sertifikaya karşılık gelir.Kaynaklar Paket Kimliği: SDK'yı uygulamaya yerleştirmek için APK'lar oluştururken bu SDK'daki tüm kaynakların yeniden eşlendiği paket kimliği. Bu, geriye dönük uyumluluğu sağlar.
Bir SDK yalnızca bir modülde görünebilir. Aynı SDK'ya birden fazla modül bağlıysa bu bağımlılığın tekilleştirilmesi ve temel modüle taşınması gerekir. Farklı modüller, SDK'nın farklı sürümlerine bağlı olamaz.
SDK paketi bağımlılığı olan bir uygulama paketinden APK oluşturma (deneysel)
Uygulama paketinizden APK oluşturmak için uygulama paketinizden APK grubu oluşturma bölümündeki veya cihaza özel APK grubu oluşturma ile ilgili bölümdeki adımları uygulayın ve uygulamanın bağımlı olduğu SDK'larla bundletool build-apks
komutunu sağlayın. Bu SDK'lar, SDK paketi biçiminde veya SDK Arşivi biçiminde sağlanabilir.
Aşağıdaki şekilde --sdk-bundles
işaretini ekleyerek SDK'ları SDK paketleri olarak sağlayabilirsiniz:
bundletool build-apks --bundle=app.aab --sdk-bundles=sdk1.asb,sdk2.asb \ --output=app.apks
Aşağıdaki şekilde --sdk-archives
işaretini ekleyerek SDK'ları SDK arşivleri olarak sağlayabilirsiniz:
bundletool build-apks --bundle=app.aab --sdk-archives=sdk1.asar,sdk2.asar \ --output=app.apks
SDK kitaplığı desteği olmayan cihazlar için SDK paketi bağımlılığı olan bir uygulama paketinden APK oluşturma
Android 13'ten önceki cihazlar SDK kitaplıklarının yüklenmesini veya SDK çalışma zamanında çalıştırılmasını desteklemez. bundletool build-apks
uygulamasını --sdk-bundles
veya --sdk-archives
seçeneğiyle çalıştırdığınızda Bundletool, geriye dönük uyumluluk karmaşıklığını gizler ve aynı uygulama paketinden APK'nızın birden çok varyantını oluşturur.
Birden fazla varyant, farklı özelliklere sahip cihazları hedefler:
- Daha yeni cihazlarda, SDK uygulamadan ayrı bir paket olarak yüklenir ve uygulama APK'ları hiçbir SDK içeriği barındırmaz.
- Daha eski cihazlarda bir veya daha fazla varyant vardır. Bu varyantlarda SDK APK'ları, ek APK bölümleri olarak ayarlanmış uygulama APK'sına eklenir. SDK APK'ları uygulama paketine aittir. Bu durumda, cihazdaki uygulama çalışma zamanında SDK çalışma zamanı emüle edilir.
SDK bağımlılığı olmayan uygulama paketleri için APK'lar oluşturmanıza benzer şekilde, bundletool extract-apks
ve bundletool install-apks
bağlı cihaz veya sağlanan cihaz yapılandırması için en iyi varyanttan filtrelenmiş APK grubu döndürür.
Eski cihazlarda, yalnızca belirli bir uygulamanın SDK arşivinden APK bölümleri oluşturmak istediğiniz ileri düzey kullanım durumları için bundletool build-sdk-apks-for-app
komutunu kullanın:
bundletool build-sdk-apks-for-app --app-properties=app-properties.json \ --sdk-archive=sdk.asar --output=sdk.apks
app-properties
dosyası, runtime_enabled_sdk_config.proto
dosyasında açıklanan alanları içermelidir. app-properties
dosyası şu şekilde görünür:
{
"package_name": "com.my.app",
"version_code": 1234,
"min_sdk_version": 21,
"resources_package_id": 0x7e
}
bundletool build-sdk-apks-for-app
komutu, uygulama paketi adı altındaki SDK içeriğine karşılık gelen uygulama APK'larının alt kümesini oluşturur. Bu APK'ları uygulama içeriğini barındıran diğer APK'larla birleştirebilirsiniz. Örneğin, bunları ayrı ve artımlı olarak derler ve SDK çalışma zamanını desteklemeyen bir cihaza birlikte yüklenirseniz.
SDK paketi oluşturma ve test etme (deneysel)
ASB derlemek ve kurulum ile dağıtım için gereken dosyaları oluşturma testi için bundletool
kullanabilirsiniz.
SDK paketi oluşturma
ASB'nizi komut satırından derleyebilir ve jarsigner kullanarak imzalayabilirsiniz.
SDK paketi oluşturmak için aşağıdaki adımları uygulayın:
Uygulama paketi için geçerli adımları uygulayarak SDK paketinin manifestini ve kaynaklarını proto biçiminde oluşturun.
Uygulama modülünde yaptığınız gibi SDK'nızın derlenen kodunu ve kaynaklarını temel bir zip dosyasında paketleyin.
Android SDK Bundle spesifikasyonunda açıklanan biçimle eşleşen bir
SdkModulesConfig.pb.json
ve birSdkBundleConfig.pb.json
dosyası oluşturun.bundletool build-sdk-bundle
komutunu kullanarak aşağıdaki gibi ASB'nizi oluşturun:
bundletool build-sdk-bundle --sdk-bundle-config=SdkBundleConfig.pb.json \ --sdk-modules-config=SdkModulesConfig.pb.json \ --modules=base.zip --output=sdk.asb
Aşağıdaki tabloda, bundletool build-sdk-bundle
komutunu kullanırken ayarlayabileceğiniz çeşitli işaretler ve seçenekler ayrıntılı olarak açıklanmaktadır.
Tablo 3. bundletool build-sdk-bundle
komutu için seçenekler
İşaretle | Açıklama |
---|---|
--modules |
(Gerekli) Son ASB'yi oluşturmak istediğiniz modül dosyası. |
--output |
(Zorunlu) ASB'nin oluşturulmasını istediğiniz yol. |
--sdk-modules-config |
(Gerekli) SDK modüllerinin yapılandırmasını açıklayan JSON dosyasının yolu. JSON dosyasının nasıl biçimlendirileceğini öğrenmek için Android SDK Bundle özellikleri bölümüne bakın. |
--sdk-bundle-config |
SDK paketinin yapılandırmasını açıklayan JSON dosyasının yolu. JSON dosyasının nasıl biçimlendirileceğini öğrenmek için Android SDK Bundle özellikleri bölümüne bakın. |
--metadata-file |
ASB için meta verilerin ekleneceği dosya.
İşaret değerinin biçimi <bundle-path>:<physical-file> şeklindedir. Burada <bundle-path> , SDK paketinin meta veri dizinindeki dosya konumunu belirtir ve <physical-file> , depolanacak ham verileri içeren mevcut bir dosyadır. İşaret, tekrarlanabilir.
|
--overwrite |
Ayarlanırsa bu seçenek mevcut çıkışların üzerine yazılır. |
Bir SDK paketinden APK oluşturma
ASB'nizi oluşturduktan sonra aşağıdaki kodda gösterildiği gibi bundletool build-sdk-apks
komutunu kullanıp APK'larını oluşturarak bir SDK paketini yerel olarak test edebilirsiniz:
bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks
bundletool
, SDK paketinizden APK oluşturduğunda, araç APK'ları APK grup arşivi adı verilen ve .apks
dosya uzantısını kullanan bir kapsayıcıya ekler. bundletool
, SDK paketinden tüm cihaz yapılandırmalarını hedefleyen tek bir bağımsız APK oluşturur.
ASB'yi bir cihaza dağıtmak istiyorsanız aşağıdaki komutta gösterildiği gibi uygulamanızın imzalama bilgilerini de eklemeniz gerekir:
bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks \ --ks=keystore.jks \ --ks-pass=file:/keystore.pwd \ --ks-key-alias=KeyAlias \ --key-pass=file:/key.pwd
Aşağıdaki tabloda, bundletool build-sdk-apks
komutunu kullanırken ayarlayabileceğiniz çeşitli işaretler ve seçenekler ayrıntılı olarak açıklanmaktadır.
Tablo 4. bundletool build-sdk-apks
komutu için seçenekler
İşaretle | Açıklama |
---|---|
--sdk-bundle |
(Zorunlu) SDK paketinin yolu. .asb uzantısına sahip olmalıdır.
|
--output |
(Gerekli) Varsayılan olarak, APK'nın arşivinin oluşturulmasını istediğiniz yol. Alternatif olarak, --output-format=DIRECTORY kullanıyorsanız oluşturulan APK'ların depolanmasını istediğiniz dizine giden yol budur.
|
--ks |
Oluşturulan APK'ları imzalamak için kullanmak istediğiniz anahtar deposunun yolu. |
--ks-key-alias |
Oluşturulan APK'ları imzalamak için anahtar deposunda kullanılacak anahtarın takma adı. |
--key-pass |
Oluşturulan APK'ları imzalamak için kullanılacak anahtar deposundaki anahtarın şifresi. Şifreyi açık metin olarak iletirseniz değerin önüne Bu işaret ayarlanmazsa anahtar deposu şifresi denenir. Bu işlem başarısız olursa komut satırı terminali sizden şifre ister. |
--ks-pass |
Oluşturulan APK'ları imzalamak için kullanılacak anahtar deposunun şifresi. Şifreyi açık metin olarak iletirseniz değerin önüne Bu işaret ayarlanmazsa komut satırı terminali sizden şifre ister. |
--aapt2 |
Kullanılacak AAPT2 ikili programının yolu. |
--output-format |
Oluşturulan APK'lar için çıkış biçimi. Varsayılan olarak bu seçenek APK_SET değerine ayarlanır. Bu ayar, APK'ları oluşturulan APK grubu arşivine çıkarır. DIRECTORY olarak ayarlanırsa APK'ları --output tarafından belirtilen dizine oluşturur. |
--verbose |
Ayarlanırsa bu seçenek, standart çıkışta komut yürütme hakkında ek bilgiler yazdırır. |
--version-code |
SDK sürüm kodu. Bu, APK'yı yüklemek için Android platformu tarafından kullanılan sürüm kodudur, SDK sürümü değildir. Bu seçenek rastgele bir değere ayarlanabilir. Ayarlanmazsa varsayılan olarak 0 olur. |
--overwrite |
Ayarlanırsa bu seçenek mevcut çıkışların üzerine yazılır. |
SDK APK'larının dağıtımını yapma, ayıklama ve boyutlarını ölçme
Uygulamalarda APK'ları bağlı bir cihaza dağıtmak, mevcut bir APK grubundan cihaza özel APK'lar çıkarmak ve bir APK grubundaki APK'ların tahmini indirme boyutlarını ölçmek için kullanılan adımların aynısını uygulayabilirsiniz.
Bir SDK paketinden SDK Arşivi oluşturma
ASB'nizi dağıtım kanalınıza (ör. Google Play) yükledikten sonra ASB, Maven üzerinden uygulama geliştiricilere dağıtılmak üzere bir Android SDK Arşivi'ne (.asar
) dönüştürülür. Biçimle ilgili daha fazla bilgi için SDK Arşivi biçim özellikleri hakkındaki bölüme bakın.
ASB'nizi derledikten sonra, aşağıdaki kodda gösterildiği gibi bundletool build-sdk-asar
komutunu kullanarak Android SDK Arşivi oluşturma işlemini yerel olarak test edebilirsiniz:
bundletool build-sdk-asar --sdk-bundle=sdk.asb --output=sdk.asar \ --apk-signing-key-certificate=keycert.txt
Aşağıdaki tabloda, bundletool build-sdk-asar
komutunu kullanırken ayarlayabileceğiniz çeşitli işaretler ve seçenekler ayrıntılı olarak açıklanmaktadır.
Tablo 5. bundletool build-sdk-asar
komutu için seçenekler
İşaretle | Açıklama |
---|---|
--apk-signing-key-certificate |
(Zorunlu) SDK APK imzalama sertifikasının yolu. Bu, build-sdk-apks komutunda APK'ları imzalamak için kullandığınız anahtara karşılık gelen sertifikadır.
|
--output |
(Gerekli) .asar dosyasının oluşturulmasını istediğiniz yol.
|
--sdk-bundle |
(Zorunlu) SDK paketinin yolu. .asb uzantısına sahip olmalıdır.
|
--overwrite |
Ayarlanırsa bu seçenek mevcut çıkışların üzerine yazılır. |
Çalışma zamanının etkin olduğu SDK biçimleri (deneysel)
Çalışma zamanı özelliğinin etkin olduğu SDK'lar iki Android dosya biçimi sunar:
- Çalışma zamanının etkin olduğu SDK'yı uygulama mağazalarına yayınlamak için kullanılan Android SDK Bundle (
.asb
). - Android SDK Arşivi (
.asar
), çalışma zamanı özelliği etkin SDK'yı Maven'de dağıtmak için kullanılır.
Android SDK Bundle biçimi
SDK Paketi, çalışma zamanı özelliğinin etkin olduğu SDK'lar için yayınlama biçimidir. SDK'nın bağımlı olduğu kitaplıklardaki kodlar da dahil olmak üzere tüm SDK kodunu ve kaynaklarını içerir. SDK'nın bağımlı olduğu, çalışma zamanı etkin diğer SDK'ların kodunu ve kaynaklarını içermez.
Android SDK Bundle (ASB), .asb
uzantısına sahip imzalı bir zip dosyasıdır. SDK kodu ve kaynakları, APK'dakine benzer şekilde burada düzenlenir. ASB, yüklenebilir APK'ların oluşturulmasına yardımcı olan çeşitli yapılandırma dosyaları da içerir.
![](https://developer.android.com/static/studio/images/command-line/asb-format.png?authuser=5&hl=tr)
Aşağıdaki listede bazı ASB dosyaları daha ayrıntılı olarak açıklanmaktadır:
SdkBundleConfig.pb
: SDK'nızın bağımlı olduğu çalışma zamanı özellikli SDK'ların listesini içeren, proto biçimli bir yapılandırma dosyası. Tanımın tamamı içinsdk_bundle_config.proto
dosyasına göz atın.modules.resm
: SDK'dan APK'lar oluşturmak için gereken tüm verileri içeren bir zip dosyası.SdkModulesConfig.pb
: Proto biçimindeki bir yapılandırma dosyası. Bu dosya, çerçevenin (SandboxedSdkProvider
) SDK giriş noktasının SDK adını, sürümünü ve sınıf adını içerir. Tam tanım içinsdk_modules_config.proto
dosyasına bakın.base/
: SDK kodunu ve kaynakları içeren tek modüldür.manifest/
: SDK'nın proto biçimindeki manifesti.dex/
: DEX biçiminde derlenmiş kod. Birden çok DEX dosyası sağlanabilir.res/
,lib/
,assets/
: Bu dizinler tipik bir APK'daki dizinlerle aynıdır. SDK'nın APK'ları oluşturulurken bu dizinlerdeki yollar korunur.root/
: Bu dizin, daha sonra SDK APK'larının köküne taşınan dosyaları depolar. Örneğin, SDK'nızınClass.getResource()
yöntemini kullanarak yüklediği Java tabanlı kaynaklar içerebilir. Bu dizindeki yollar da korunur.
BUNDLE-METADATA
: Bu dizin, araçlar veya uygulama mağazaları için yararlı bilgiler içeren meta veri dosyalarını içerir. Bu tür meta veri dosyaları, ProGuard eşlemelerini ve SDK'nızın DEX dosyalarının tam listesini içerebilir. Bu dizindeki dosyalar, SDK'nızın APK'ları ile paketlenmemiştir.
Android SDK Arşivi biçimi
Android SDK Arşivi, Maven'de çalışma zamanı özellikli bir SDK'nın dağıtım biçimidir. Bu, .asar
dosya uzantısına sahip bir zip dosyasıdır. Dosya, çalışma zamanı özellikli SDK'nıza bağlı bir Android App Bundle oluşturmak için uygulama derleme araçlarının ihtiyaç duyduğu tüm bilgileri içerir.
![](https://developer.android.com/static/studio/images/command-line/asar-format.png?authuser=5&hl=tr)
Aşağıdaki listede bazı Android SDK Arşiv dosyaları daha ayrıntılı olarak açıklanmaktadır:
SdkMetadata.pb
: Bu SDK için oluşturulan APK'ları imzalamak amacıyla kullanılan anahtarın SDK adını, sürümünü ve sertifika özetini içeren proto biçimindeki yapılandırma dosyası. Tam tanım içinsdk_metadata.proto
dosyasına bakın.modules.resm
: SDK'dan APK'lar oluşturmak için gereken tüm verileri içeren bir zip dosyası. Bu, Android SDK Bundle'daki.resm
dosyasıyla aynıdır.AndroidManifest.xml
: SDK'nın metin XML biçimindeki manifest dosyası.
Ek kaynaklar
bundletool
uygulamasını kullanma hakkında daha fazla bilgi edinmek için Uygulama Paketleri: Bundletool ve Play Console ile paketleri test etme adlı videoyu izleyin.