Android projeniz için kullanılabilen tüm derleme görevlerini aşağıdaki komutla yürütebilirsiniz:
Gradle sarmalayıcı komut satırı aracı. İnsanların
Windows (gradlew.bat
) ve bir kabuk için toplu dosya olarak kullanılabilir
komut dosyası (gradlew.sh
) ve
kökten erişilebilir.
Sarmalayıcı ile bir görev çalıştırmak için Terminal penceresi (Android Studio'da, Görünüm > Araç Pencereleri > Terminal):
- Windows Komut Kabuğu'nda:
gradlew task-name
- Mac, Linux veya Windows Powershell'de:
./gradlew task-name
Şurada mevcut tüm derleme görevlerinin listesini görmek için:
tasks
yürütme:
gradlew tasks
Bu sayfanın geri kalanında, uygulamanızı geliştirip çalıştırmak için temel bilgiler açıklanmaktadır ekleyebilirsiniz. Android derlemesi için Yapılandırma oluşturun.
Komut satırı yerine Android Studio araçlarını kullanmayı tercih ederseniz Uygulamanızı geliştirme ve çalıştırma başlıklı makaleyi inceleyin.
Derleme türleri hakkında
Varsayılan olarak her Android uygulaması için iki derleme türü mevcuttur: Bir uygulamanızda hata ayıklamak için (hata ayıklama derlemesi) ve uygulamanızı yayınlamak için sürüm derlemesi. Her bir anahtar kelimeden derlemenizi bir sertifika ile imzalamanız gerekir olanak tanır. Hata ayıklama derlemesi, SDK araçları (güvenli değildir ve bu araçları kullanarak Google Play'de yayınlayamazsınız Store) ve sürüm derlemesinin kendi özel anahtarınızla imzalanması gerekir.
Uygulamanızı yayınlanmak üzere geliştirmek istiyorsanız uygun imzalama anahtarıyla uygulamanızı imzalayın. Ancak yeni başlıyorsanız uygulamalarınızı bir cihazda hızlı bir şekilde çalıştırabilirsiniz emülatöründe veya bağlı bir cihazda hata ayıklama APK'sı oluşturma hakkında daha fazla bilgi edinin.
build.gradle.kts
içinde özel bir derleme türü de tanımlayabilirsiniz
hata ayıklama derlemesi olarak imzalanacak şekilde yapılandırmak için
debuggable true
. Daha fazla bilgi için
Derleme Varyantlarını Yapılandırma bölümünü inceleyin.
APK oluşturma ve dağıtma
Uygulama paketi oluşturmak, uygulama geliştirmenizi uygulamanızı paketleyip Play Console'a yüklerseniz APK oluşturmak Hata ayıklama derlemesini hızlıca test etmek veya uygulamanızı paylaşmak için uygundur dağıtılabilir bir eser olarak görebileceğiz.
Hata ayıklama APK'sı oluşturma
Uygulamaları anında test etmek ve hata ayıklamak için hata ayıklama APK'sı oluşturabilirsiniz.
Hata ayıklama APK'sı, SDK araçları tarafından sağlanan bir hata ayıklama anahtarıyla imzalanır ve
adb
aracılığıyla hata ayıklamaya olanak tanır.
Hata ayıklama APK'sı oluşturmak için bir komut satırı açın ve uygulamanızın kök dizinine gidin
proje dizinini oluşturur. Hata ayıklama derlemesi başlatmak için
assembleDebug
görev:
gradlew assembleDebug
Bu işlem, şurada module_name-debug.apk
adlı bir APK oluşturur:
project_name/module_name/build/outputs/apk/
.
Dosya zaten hata ayıklama anahtarıyla imzalanmış ve
zipalign
sayesinde şunları yapabilirsiniz:
bunu bir cihaza hemen yükleyebilirsiniz.
İsterseniz APK'yı geliştirip çalışan bir emülatöre hemen yükleyebilirsiniz veya
bağlı cihaz yerine installDebug
yöntemini çağırın:
gradlew installDebug
"Hata ayıkla" sadece bir tanesidir
derleme varyantı adının büyük/küçük harf versiyonudur. Böylece bu ad, istediğiniz derleme türü veya
istediğiniz bir varyantı kullanın. Örneğin, bir "demo"unuz varsa
hata ayıklama sürümünü şununla derleyebilirsiniz:
assembleDemoDebug
görev.
Her varyant için mevcut tüm derleme ve yükleme görevlerini (
görevleri kaldır) kullanıyorsanız tasks
görevini çalıştırın.
Ayrıca uygulamanızı emülatörde çalıştırma ve uygulamanızı bir cihazda çalıştırma ile ilgili bölüme bakın.
Sürüm paketi veya APK oluşturun
Uygulamanızı yayınlamaya ve dağıtmaya hazır olduğunuzda sürüm paketi veya özel anahtarınızla imzalanmış APK'yı kullanabilirsiniz. Daha fazla bilgi için oturumunuzu kullanarak uygulamanızı imzalama komut satırı olarak da bilinir.
Uygulamanızı emülatöre dağıtma
Android Emulator'ı kullanmak için Android Sanal Makine Android Studio kullanan cihaz (AVD).
AVD oluşturduktan sonra Android Emülatör'ü başlatın ve aşağıdaki gibi kullanabilirsiniz:
Komut satırında şuna gidin:
android_sdk/tools/
ve emülatörü başlatan: ortalama görüntüleme sürenizi (AVD) belirtin:emulator -avd avd_name
AVD adından emin değilseniz
emulator -list-avds
- Uygulamanızı artık Gradle yükleme görevlerinden birini kullanarak yükleyebilirsiniz
hata ayıklama APK'sı oluşturma ile ilgili bölümde açıklanan
veya
adb
aracı.APK, bir geliştirici önizleme SDK'sı kullanılarak oluşturulmuşsa (
targetSdkVersion
bir harf içeriyorsa)-t
seçenek test APK'sı yüklemek içininstall
komutunu kullanın.adb install path/to/your_app.apk
Oluşturduğunuz tüm APK'lar kaydedilir
project_name/module_name/build/outputs/apk/
Daha fazla bilgi için Uygulamaları Android Emülatör'de çalıştırma başlıklı makaleye göz atın.
Uygulamanızı fiziksel bir cihaza dağıtma
Uygulamanızı bir cihazda çalıştırabilmeniz için önce USB'yi hata ayıklama bölümüne geçin. Bu seçeneği Ayarlar > Geliştirici seçenekleri.
Not: Android 4.2 ve sonraki sürümlerde Geliştirici seçenekleri varsayılan olarak gizlidir. Kullanılabilir hale getirmek için Ayarlar > Telefon hakkında ve Oluştur'a dokunun sayı ile yedi kez tıklayın. Önceki ekrana dönün ve Geliştirici seçenekleri.
Cihazınız kurulup USB ile bağlandıktan sonra uygulamanızı yükleyebilirsiniz
belirtilen Gradle yükleme görevlerinden birini kullanarak
hata ayıklama APK'sı oluşturma veya
adb
aracı:
adb -d install path/to/your_app.apk
Oluşturduğunuz tüm APK'lar kaydedilir
project_name/module_name/build/outputs/apk/
Daha fazla bilgi için bkz. Uygulamaları bir Donanım Cihazında Çalıştırın.
Uygulama paketi oluşturma
Android App Bundle, uygulamanızın tüm derlenen kod ve kaynakları derler, ancak APK oluşturma ve oturum açma işlemlerini Google'da erteleyin Oyna. APK'ların aksine, uygulama paketini doğrudan bir cihaza dağıtamazsınız. Bu nedenle, APK'yı hızlıca test etmek veya başkalarıyla paylaşmak isterseniz Aksi takdirde, bunun yerine bir APK oluşturmanız gerekir.
Uygulama paketi oluşturmanın en kolay yolu
kullanabilirsiniz. Ancak bir
App Bundle'ı kullanıyorsanız bunu Gradle veya
bundletool
için geçerlidir.
Gradle ile uygulama paketi oluşturma
Komut satırından uygulama paketi oluşturmayı tercih ederseniz
bundleVariant
Uygulamanızın temel modülünde Gradle görevi.
Örneğin, aşağıdaki komut, hata ayıklama sürümü için bir uygulama paketi oluşturur
temel modülün özellikleri:
./gradlew :base:bundleDebug
Play Console'a yüklemek üzere imzalı bir paket oluşturmak istiyorsanız
temel modülün build.gradle.kts
dosyasını uygulamanızın
ekleyebilirsiniz. Daha fazla bilgi edinmek için
Uygulamanızı imzalamak için Gradle'ı yapılandırın.
Örneğin, uygulamanızın sürüm sürümünü oluşturabilirsiniz.
otomatik olarak bir uygulama paketi oluşturur ve bunu
build.gradle.kts
dosyasında sağladığınız bilgiler.
Bunun yerine, bir uygulama paketini ayrı bir adım olarak imzalamak isterseniz:
jarsigner
komut satırından uygulama paketinizi imzalayın. Uygulama derleme komutu
paket:
jarsigner -keystore pathToKeystore app-release.aab keyAlias
Bundletool'u kullanarak uygulama paketi oluşturma
bundletool
, Android Studio'nun, yani Android Gradle'ın
eklentisinin ve Google Play'in, uygulamanızın derlenmiş kodunu dönüştürmek ve
kaynaklarını uygulama paketlerine dönüştürmeli ve bu paketlerden dağıtılabilir APK'lar oluşturmalıdır.
Bu nedenle,
uygulama paketlerini bundletool
ile test edin ve yerel olarak yeniden oluşturun
Google Play'in APK'ları nasıl ürettiğini öğrenmek için
uygulama paketini oluşturmak için bundletool
yöntemini çağırın. Bunun yerine
Android Studio veya Gradle görevlerini kullanıyorsanız.
Ancak, derleme görevleri için Android Studio veya Gradle görevlerini kullanmak
paketleri (örneğin, özel bir derleme araç zinciri kullanıyorsanız) bundletool
kullanabilirsiniz
kodundan uygulama paketi derlemek için
komut satırını kullanın.
kaynaklar. Henüz yapmadıysanız
GitHub deposundan bundletool
dosyasını indirin.
Bu bölümde, uygulamanızın derlenmiş kod ve kaynaklarını nasıl paketleyeceğinizi ve
ve bundletool
komut satırından nasıl kullanılacağını
Android App Bundle.
Manifest'i ve kaynakları proto biçiminde oluşturma
bundletool
, uygulama projenizle ilgili bazı bilgileri gerektiriyor. Örneğin:
uygulamanızın manifest dosyası ve kaynakları
Google'ın Protokol Arabelleği biçimi
"protobuf" olarak da bilinir. ve *.pb
dosya uzantısını kullanır. Protobuf'lar
dilden bağımsız, platform açısından bağımsız ve genişletilebilir bir mekanizma sağlama.
yapılandırılmış verileri seri hale getirmek için kullanılır. XML'e benzer ancak daha küçük,
daha basit hale getirir.
AAPT2'yi indir
Uygulamanızın manifest dosyasını ve kaynak tablosunu şurada oluşturabilirsiniz: AAPT2'nin en son sürümünü kullanarak protobuf biçiminde Google Maven deposu.
Google'ın Maven deposundan AAPT2 indirmek için aşağıdaki adımları uygulayın:
- com.android.tools.build > aapt2 depo dizini oluşturun.
- AAPT2'nin en son sürümünün adını kopyalayın.
Kopyaladığınız sürüm adını aşağıdaki URL'ye ekleyin ve hedef işletim sistemi: https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/aapt2-version/aapt2-aapt2-version-[windows | linux | osx].jar
Örneğin, Windows için 3.2.0-alpha18-4804415 sürümünü indirmek isterseniz şunları kullanır: https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/3.2.0-alpha18-4804415/aapt2-3.2.0-alpha18-4804415-pencereler.jar
Bir tarayıcıda URL'ye gidin. AAPT2 kısa süre içinde indirilmeye başlayacaktır.
Yeni indirdiğiniz JAR dosyasının paketini açın.
Uygulamanızın kaynaklarını derleyin ve bağlayın
Aşağıdaki komutla uygulamanızın kaynaklarını derlemek için AAPT2'yi kullanın:
aapt2 compile \ project_root/module_root/src/main/res/drawable/Image1.png \ project_root/module_root/src/main/res/drawable/Image2.png \ -o compiled_resources/
AAPT2'nin, derlenmiş çeşitli kaynaklarınızı bir
tek APK, uygulamanızın manifest ve derlenmiş kaynaklarını dönüştürmek için AAPT2 talimatı verin
aşağıda gösterildiği gibi --proto-format
işaretini ekleyerek protobuf biçimine dönüştürebilirsiniz:
aapt2 link --proto-format -o output.apk \ -I android_sdk/platforms/android_version/android.jar \ --manifest project_root/module_root/src/main/AndroidManifest.xml \ -R compiled_resources/*.flat \ --auto-add-overlay
Daha sonra, çıkış APK'sından içerik ayıklayabilirsiniz (örneğin, uygulamanızın
AndroidManifest.xml
, resources.pb
ve diğer kaynak dosyaları şimdi hazır
kullanabilirsiniz. Girişi hazırlarken bu dosyalar gerekir
bundletool
, aşağıda açıklandığı gibi uygulama paketinizi derlemelidir
bölümüne bakın.
Önceden derlenmiş kod ve kaynakları paketleme
Uygulamanız için uygulama paketi oluşturmak üzere bundletool
uygulamasını kullanmadan önce
önce her biri bir sorgu için derlenmiş kod ve kaynakları içeren
uygulama modülünü kullanabilirsiniz. Her modülün ZIP dosyasının içeriği ve düzeni oldukça
Android App Bundle biçimine benzer.
Örneğin, uygulamanızın temel modülü için bir base.zip
dosyası oluşturmanız ve
şu şekilde düzenleyebilirsiniz:
Dosya veya dizin | Açıklama |
---|---|
manifest/AndroidManifest.xml
|
Modülün protobuf biçimindeki manifest dosyası. |
dex/...
|
Uygulamanızın derlenmiş DEX dosyalarından bir veya daha fazlasını içeren bir dizin. Bu dosyalar
şu şekilde adlandırılmalıdır: classes.dex ,
classes2.dex , classes3.dex vb.
|
res/...
|
Tüm cihazlar için modül kaynaklarını protobuf biçiminde içerir yapılandırmanın üç yolu vardır. Alt dizinler ve dosyalar aşağıdakine benzer şekilde organize edilmelidir: normal bir APK'nınkinden farklıdır. |
root/... , assets/... ve lib/...
|
Bu dizinler, şu bölümde açıklanan dizinlerle aynıdır: Android App Bundle biçimini kullanarak yeni bilgiler ekleyebilirsiniz. |
resources.pb
|
Uygulamanızın protobuf biçimindeki kaynak tablosu. |
Uygulamanızın her modülü için ZIP dosyasını hazırladıktan sonra bunları
bundletool
adresine giderek uygulama paketinizi oluşturun.
Bundletool'u kullanarak uygulama paketinizi oluşturma
Uygulama paketinizi oluşturmak için bundletool build-bundle
komutunu şu şekilde kullanırsınız:
aşağıda gösterilmiştir:
bundletool build-bundle --modules=base.zip --output=mybundle.aab
Aşağıdaki tabloda, build-bundle
komutuna ait işaretleri daha ayrıntılı bir şekilde görebilirsiniz.
ayrıntı:
İşaretle | Açıklama |
---|---|
--modules=path-to-base.zip, path-to-module2.zip,path-to-module3.zip
|
bundletool tarafından istenen modül ZIP dosyalarının listesini belirtir
kullanabileceğiniz en iyi uygulamalardan bahsedeceğiz.
|
--output=path-to-output.aab
|
Çıkış *.aab dosyası için yolu ve dosya adını belirtir.
|
--config=path-to-BundleConfig.json
|
Aşağıdaki işlemler için kullanabileceğiniz isteğe bağlı bir yapılandırma dosyasının yolunu belirtir: özelleştirmenize olanak tanır. Daha fazla bilgi edinmek için aşağı akış APK oluşturma işlemini özelleştirme. |
--metadata-file=target-bundle-path:local-file-path
|
bundletool işletim sistemine, isteğe bağlı bir meta veri dosyasını paketlemesini söyler
inceleyebilirsiniz. Bu dosyayı,
ProGuard eşlemeleri veya uygulamanızın DEX dosyalarının tam listesi;
uygulama mağazasındaki veya araç zincirinizdeki diğer adımlar için yararlı olabilir.
target-bundle-path, kökünün köküne göre bir yol belirtir meta veri dosyasının paketlenmesini istediğiniz uygulama paketini, ve local-file-path, yerel meta verilerin yolunu belirtir olabilir. |
Aşağı akış APK oluşturmayı özelleştirme
Uygulama paketleri, uygulamanın meta verileri sağlayan bir BundleConfig.pb
dosyası içerir.
Google Play gibi mağazalar, paketten APK oluştururken bunu gerektirir.
bundletool
bu dosyayı sizin için oluştursa da bazı özellikleri yapılandırabilirsiniz.
bir BundleConfig.json
dosyasındaki meta verileridir ve bunu
bundletool build-bundle
komutu - bundletool
daha sonra bunu dönüştürür ve birleştirir
her uygulama paketinde bulunan protobuf sürümünü içeren bir dosya yükleyin.
Örneğin, hangi yapılandırma APK'larının etkinleştirileceğini veya etkinleştirileceğini ya da
devre dışı bırak'ı tıklayın. Aşağıdaki BundleConfig.json
dosyası örneği,
Her biri farklı bir dili (yani
Her dil için kaynaklar kendi tabanlarında veya
özellik APK'ları):
{
"optimizations": {
"splitsConfig": {
"splitDimension": [{
"value": "LANGUAGE",
"negate": true
}]
}
}
}
BundleConfig.json
dosyanızda, ayrılacağınız dosya türlerini de belirtebilirsiniz
APK'ları
glob kalıpları için şu şekildedir:
{
"compression": {
"uncompressedGlob": ["res/raw/**", "assets/**.uncompressed"]
}
}
Varsayılan olarak bundletool
uygulamasının, uygulamanızın yerel dosyalarını sıkıştırmadığını unutmayın
kitaplıklar (Android 6.0 veya sonraki sürümlerde) ve kaynak
tablo (resources.arsc
). Yapılandırmalarınızın tam açıklaması için
BundleConfig.json
cihazınızı kontrol edin. bundletool
config.proto
dosyası biçimindedir.
Proto3 kullanılarak
yazılır.
söz dizimine uygun olmalıdır.
Uygulamanızı bir uygulama paketinden dağıtma
Uygulama paketi oluşturup imzaladıysanız
APK'lar oluşturmak ve bunları dağıtmak için bundletool
kullanın
cihaz.
Uygulamanızı komut satırından imzalayın
Uygulamanızı imzalamak için Android Studio'ya ihtiyacınız yoktur. Uygulamanızı şuradan imzalayabilirsiniz:
komut satırından, APK'lar için apksigner
, uygulama paketleri için jarsigner
kullanarak
veya Gradle'ı yapılandırma sırasında sizin yerinize imzalayacak şekilde yapılandırın. Her iki durumda da,
önce şunu kullanarak bir özel anahtar oluşturun:
keytool
aşağıdaki gibidir:
keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias
Yukarıdaki örnekte anahtar deposu ve anahtar şifrelerinin yanı sıra
"Ayırt Edici Ad" anahtarınızın bulunduğu alana girin. Daha sonra
anahtar deposunu my-release-key.jks
adında bir dosya biçiminde kaydeder ve
geçerli dizini (istediğiniz yere taşıyabilirsiniz). Anahtar deposu
10.000 gün boyunca geçerli tek bir anahtar içerir.
Artık APK'nızı veya uygulama paketinizi manuel olarak imzalayabilir ya da Gradle'ı imzalayacak şekilde yapılandırabilirsiniz uygulamanız için aşağıdaki bölümlerde açıklanmıştır.
Uygulamanızı komut satırından manuel olarak imzalayın
Bir uygulama paketini komut satırından imzalamak isterseniz şunu kullanabilirsiniz:
jarsigner
.
Bunun yerine bir APK'yı imzalamak isterseniz zipalign
ve apksigner
kullanmanız gerekir.
gerekir.
- Bir komut satırı açın: Android Studio'da Görünüm > Araç Pencereleri > Terminal'i tıklayın ve imzasız APK'nızın bulunduğu dizine gidin. bulabilirsiniz.
-
İmzalanmamış APK'yı
zipalign
kullanarak hizalayın:zipalign -v -p 4 my-app-unsigned.apk my-app-unsigned-aligned.apk
zipalign
, sıkıştırılmamış tüm verilerin belirli bir bayt hizalaması veya bir uygulamanın tükettiği RAM miktarını azaltır. -
apksigner
kullanarak APK'nızı özel anahtarınızla imzalayın:apksigner sign --ks my-release-key.jks --out my-app-release.apk my-app-unsigned-aligned.apk
Bu örnek,
my-app-release.apk
adresindeki imzalı APK'yı oluşturur saklanan bir özel anahtar ve sertifika ile imzaladıktan sonra tek KeyStore dosyası:my-release-key.jks
.apksigner
aracı, aşağıdakiler de dahil olmak üzere diğer imzalama seçeneklerini destekler: bir APK dosyasını ayrı özel anahtar ve sertifika dosyaları kullanarak imzalama ve bir APK'yı birden fazla imzalayanı kullanarak imzalama. Daha ayrıntılı bilgi içinapksigner
başlıklı makaleyi inceleyin. bir referans noktası olarak kabul edilir.Not:
apksigner
aracını kullanmak için Android SDK Derleme Araçları'nın 24.0.3 veya daha sonraki bir sürümü yüklü olmalıdır. Bu paketi SDK Manager'ı kullanarak güncelleyebilirsiniz. -
APK'nızın imzalandığını doğrulayın:
apksigner verify my-app-release.apk
Uygulamanızı imzalamak için Gradle'ı yapılandırma
Modül düzeyindeki build.gradle.kts
dosyasını açın ve
storeFile
için girişlerin olduğu signingConfigs {}
blok,
storePassword
, keyAlias
ve
keyPassword
ve ardından, bu nesneyi
Derleme türünüzde signingConfig
özelliği. Örnek:
Kotlin
android { ... defaultConfig { ... } signingConfigs { create("release") { // You need to specify either an absolute path or include the // keystore file in the same directory as the build.gradle file. storeFile = file("my-release-key.jks") storePassword = "password" keyAlias = "my-alias" keyPassword = "password" } } buildTypes { getByName("release") { signingConfig = signingConfigs.getByName("release") ... } } }
Eski
android { ... defaultConfig { ... } signingConfigs { release { // You need to specify either an absolute path or include the // keystore file in the same directory as the build.gradle file. storeFile file("my-release-key.jks") storePassword "password" keyAlias "my-alias" keyPassword "password" } } buildTypes { release { signingConfig signingConfigs.release ... } } }
Uygulamanızı geliştirirken bir Gradle görevi çağıran Gradle, sizin için uygulamanızı imzalar (ve zipalign çalıştırır).
Ayrıca, sürüm derlemesini imzalama anahtarınızla yapılandırdığınız için
"yükleme" görevi kullanılabilir. Böylece her şeyi bir araya getirerek
imzalayıp sürüm APK'sını bir emülatöre veya cihaza yükleyin.
installRelease
görev.
Özel anahtarınızla imzalanmış bir uygulama dağıtıma hazır, ancak şunu yapmanız gerekir: ilk olarak nasıl yayınlayacağınız hakkında daha fazla bilgi edinin uygulamanızı indirin ve Google Play lansman kontrol listesini inceleyin.