bundletool, Android Studio, Android Gradle eklentisi ve Google Play'in Android App Bundle oluşturmak için kullandığı temel araçtır. bundletool
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. Ayrıca, komut satırı aracı olarak da kullanılabilir. Böylece, uygulama paketlerini ve SDK paketlerini kendiniz oluşturabilir, Google Play'in uygulamanızın APK'larının veya çalışma zamanı etkin SDK'larınızın APK'larının sunucu tarafı derlemesini yeniden oluşturabilirsiniz.
bundletool dilini indir
Henüz yapmadıysanız bundletool uygulamasını GitHub deposundan 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, ardından bu uygulama paketinden APK oluşturmayı test edebilirsiniz.
Uygulama paketi oluşturma
Android Studio ve Android Gradle eklentisini kullanarak Android App Bundle oluşturun ve imzalayın.
Ancak IDE kullanmak mümkün değilse (ör. sürekli derleme sunucusu kullanıyorsanız) uygulama paketinizi komut satırından oluşturabilir ve jarsigner kullanarak imzalayabilirsiniz.
bundletool ile uygulama paketi oluşturma hakkında daha fazla bilgi için Bundletool kullanarak uygulama paketi oluşturma başlıklı makaleyi inceleyin.
Uygulama paketinizden bir dizi APK oluşturma
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:
bundletoolkomut satırı aracını yerel olarak kullanın.- Bir test kanalı kullanarak paketinizi Google Play üzerinden Play Console'a yükleyin.
Bu bölümde, uygulama paketinizi yerel olarak test etmek için bundletool nasıl kullanacağınız açıklanmaktadır.
bundletool, uygulama paketinizden APK'lar oluşturduğunda, oluşturulan APK'ları .apks dosya uzantısını kullanan APK grubu arşivi adlı bir kapsayıcıya ekler. Uygulama paketinizden, uygulamanızın desteklediği tüm cihaz yapılandırmaları için bir APK grubu oluşturmak üzere bundletool build-apks komutunu aşağıdaki gibi kullanın:
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
APK'ları bir cihaza dağıtmak istiyorsanız aşağıdaki komutta gösterildiği gibi uygulamanızın imzalama bilgilerini de eklemeniz gerekir. İmzalama bilgilerini belirtmezseniz bundletool, APK'larınızı sizin için bir hata ayıklama anahtarıyla 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 daha ayrıntılı olarak açıklanmaktadır:
Tablo 1. bundletool build-apks komutuyla ilgili seçenekler
| İşaretle | Açıklama |
|---|---|
--bundle=path |
(Zorunlu) Android Studio kullanarak oluşturduğunuz uygulama paketinin yolunu belirtir. Daha fazla bilgi için Projenizi oluşturma başlıklı makaleyi inceleyin. |
--output=path |
(Zorunlu) Uygulamanızın tüm APK yapılarını içeren çıkış .apks dosyasının adını belirtir. Bu dosyadaki yapıları bir cihazda test etmek için bağlı bir cihaza APK'ları dağıtma bölümündeki adımları uygulayın.
|
--overwrite |
--output seçeneğini kullanarak belirttiğiniz yolla mevcut çıkış dosyalarının üzerine yazar. Bu işareti eklemezseniz ve çıkış dosyası zaten varsa derleme hatası alırsınız.
|
--aapt2=path |
AAPT2 için özel bir yol belirtir.
Varsayılan olarak bundletool, AAPT2'nin kendi 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ı hata ayıklama imzasıyla imzalamaya çalışır.
|
--ks-pass=pass:password veya --ks-pass=file:/path/to/file |
Anahtar deposu şifrenizi belirtir. Şifreyi düz metin olarak belirtirseniz pass: ile niteleyin.
Şifreyi içeren bir dosyanın yolunu iletiyorsanız file: ile niteleyin. --ks işaretini kullanarak bir anahtar deposu belirtirseniz ancak --ks-pass belirtmezseniz bundletool, komut satırından şifre girmenizi ister.
|
--ks-key-alias=alias |
Kullanmak istediğiniz imzalama anahtarının diğer adını belirtir. |
--key-pass=pass:password veya --key-pass=file:/path/to/file |
İmzalama anahtarının şifresini belirtir. Şifreyi düz metin olarak belirtirseniz pass: ile niteleyin.
Şifreyi içeren bir dosyanın yolunu iletiyorsanız file: ile niteleyin. Bu şifre, anahtar deposunun şifresiyle aynıysa bu işareti atlayabilirsiniz. |
--connected-device |
bundletool'ya, bağlı bir cihazın yapılandırmasını hedefleyen APK'lar oluşturmasını 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 bu işareti kullanarak uygulamanızı dağıtmak istediğiniz cihazın seri kimliğini belirtin. |
--device-spec=spec_json |
Hedeflemek istediğiniz cihaz yapılandırmasını belirten bir .json dosyasına giden yolu sağlar. Daha fazla bilgi edinmek için Cihaz spesifikasyonu JSON dosyalarını oluşturma ve kullanma başlıklı bölüme gidin.
|
--mode=universal |
Modu universal olarak ayarlar. Bu seçeneği kullanmak için:
bundletool Uygulamanızın tüm kod ve kaynaklarını içeren tek bir APK oluşturun. Böylece APK, uygulamanızın desteklediği tüm cihaz yapılandırmalarıyla uyumlu olur.
Not: Bu APK'ların, belirli bir cihaz yapılandırması için optimize edilenlerden daha büyük olduğunu unutmayın. Ancak bu bağlantılar, örneğin uygulamanızı birden fazla cihaz yapılandırmasında test etmek isteyen dahili test kullanıcılarıyla daha kolay paylaşılabilir. |
--local-testing
|
Uygulama paketinizi yerel test için etkinleştirir.
Yerel test, Google Play sunucularına yükleme yapmaya gerek kalmadan hızlı ve yinelemeli test döngüleri yapmanıza olanak tanır.
|
Bağlı bir cihaza APK dağıtma
Bir APK grubu oluşturduktan sonra bundletool, bu gruptaki doğru APK kombinasyonunu bağlı bir cihaza dağıtabilir.
Örneğin, Android 5.0 (API düzeyi 21) veya sonraki bir sürümün yüklü olduğu bağlı bir cihazınız varsa bundletool, uygulamanızı bu cihazda çalıştırmak için gereken temel APK'yı, özellik modülü APK'larını ve yapılandırma APK'larını gönderir. Alternatif olarak, bağlı cihazınızda Android 4.4 (API düzeyi 20) veya önceki bir sürüm çalışıyorsa bundletool cihazınıza dağıtılacak uyumlu bir çoklu APK arar.
Uygulamanızı bir APK setinden 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 setinin yolunu belirtin. Birden fazla cihazınız bağlıysa --device-id=serial-id işaretini ekleyerek hedef cihazı belirtin.
bundletool install-apks --apks=/MyApp/my_app.apks
Cihaza özel bir 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.
Birden fazla cihazınız bağlıysa --device-id=serial-id işaretini ekleyerek 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, bir JSON dosyasıyla belirtilen cihaz yapılandırmasını hedefleyen bir APK grubu 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, aracın dizininde cihazınız için bir JSON dosyası oluşturur. Ardından, dosyayı bundletool'ya ileterek yalnızca söz konusu JSON dosyasında açıklanan yapılandırmayı hedefleyen bir APK grubu oluşturabilirsiniz.
bundletool build-apks --device-spec=/MyApp/pixel2.json --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Cihaz spesifikasyonu JSON'unu manuel olarak oluşturma
Hedeflenen bir APK paketi oluşturmak istediğiniz cihaza erişiminiz yoksa (ör. uygulamanızı elinizde olmayan bir cihazla denemek istiyorsanız) 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, önceki bölümde açıklandığı gibi bu JSON'u bundle extract-apks komutuna iletebilirsiniz.
Mevcut bir APK grubundan cihaza özel APK'ları ayıklama
Mevcut bir APK kümeniz varsa ve bu kümeden belirli bir cihaz yapılandırmasını hedefleyen bir APK alt kümesi çıkarmak istiyorsanız extract-apks komutunu kullanabilir ve bir cihaz spesifikasyonu JSON'u belirtebilirsiniz. Örneğin:
bundletool extract-apks --apks=/MyApp/my_existing_APK_set.apks --output-dir=/MyApp/my_pixel2_APK_set.apks --device-spec=/MyApp/bundletool/pixel2.json
APK paketindeki APK'ların tahmini indirme boyutlarını ölçme
Bir APK setindeki APK'ların tahmini indirme boyutlarını, kablo üzerinden sıkıştırılmış olarak sunulacak şekilde ö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 komutuyla ilgili seçenekler
| İşaretle | Açıklama |
|---|---|
--apks=path |
(Zorunlu) İndirme boyutu ölçülen mevcut APK paketi dosyasının yolunu belirtir. |
--device-spec=path |
Eşleştirme için kullanılacak cihaz spesifikasyon dosyasına (get-device-spec konumundan veya manuel olarak oluşturulmuş) giden yolu belirtir.
Bir dizi yapılandırmayı değerlendirmek için kısmi bir yol belirtebilirsiniz.
|
--dimensions=dimensions
| Boyut tahminleri hesaplanırken kullanılan boyutları belirtir. Şunların virgülle ayrılmış listesini 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 uygulama özellikli APK'ların indirme boyutunu ölçer. Varsayılan olarak, bundletool yüklenebilir APK indirme boyutlarını ölçer.
|
--modules=modules |
Ölçümde dikkate alınacak APK paketindeki virgülle ayrılmış modül listesini belirtir. bundletool komutu, belirtilen küme için bağımlı tüm modülleri otomatik olarak içerir. Varsayılan olarak, komutu ilk indirme sırasında yüklenen tüm modüllerin indirme boyutunu ölçer.
|
Ek kaynaklar
bundletool kullanımı hakkında daha fazla bilgi edinmek için App Bundles: Testing bundles with bundletool and the Play Console (Uygulama Paketleri: Bundletool ve Play Console ile paketleri test etme) başlıklı videoyu izleyin.