Uygulamanızı komut satırından oluşturma

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ı üzerinde çalışıyor vegradlew.sh 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 Power:
    ./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:

  1. 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

  2. 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çin install 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'ya 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:

  1. com.android.tools.build > aapt2 depo dizini oluşturun.
  2. AAPT2'nin en son sürümünün adını kopyalayın.
  3. 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

  4. Bir tarayıcıda URL'ye gidin. AAPT2 kısa süre içinde indirilmeye başlayacaktır.

  5. Yeni indirdiğiniz JAR dosyasının paketini açı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.

  1. 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.
  2. İ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.

  3. 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çin apksigner 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.

  4. 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: İlk olarak, haberlerinizi nasıl yayınlayabileceğinizle ilgili uygulamanızı indirin ve Google Play lansman kontrol listesini inceleyin.