bundletool

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:

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: bundletool yalnızca evrensel APK'daki manifest dosyalarında <dist:fusing dist:include="true"/> öğesini belirten özellik modüllerini içerir. Daha fazla bilgi edinmek için özellik modülü manifest dosyasını okuyun.

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.

--local-testing işaretini kullanarak modül yüklemenin nasıl test edileceğine dair bir örnek için Modül yüklemelerini yerel olarak test etme bölümüne bakın.

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:

  1. Uygulama paketi için geçerli adımları uygulayarak SDK paketinin manifestini ve kaynaklarını proto biçiminde oluşturun.

  2. Uygulama modülünde yaptığınız gibi SDK'nızın derlenen kodunu ve kaynaklarını temel bir zip dosyasında paketleyin.

  3. Android SDK Bundle spesifikasyonunda açıklanan biçimle eşleşen bir SdkModulesConfig.pb.json ve bir SdkBundleConfig.pb.json dosyası oluşturun.

  4. 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 pass: getirmeniz gerekir. Örneğin, pass:qwerty. Şifre, bir dosyanın ilk satırıysa değerin önüne file: getirmeniz gerekir. Örneğin, file:/tmp/myPassword.txt.

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 pass: getirmeniz gerekir. Örneğin, pass:qwerty. Şifre, bir dosyanın ilk satırıysa değerin önüne file: getirmeniz gerekir. Örneğin, file:/tmp/myPassword.txt.

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.

Şekil 1. Android SDK Bundle'ın içeriği.

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çin sdk_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çin sdk_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ın Class.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.

Şekil 2. Android SDK Arşiv Paketi'nin içeriği.

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çin sdk_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.