Derlemenizi yapılandırma

Android derleme sistemi, uygulama kaynakları ile kaynak kodu ile paketleri derler bunları test edebileceğiniz, dağıtabileceğiniz, imzalayabileceğiniz ve geliştirebileceğiniz APK'lar ya da Android App Bundle'lar dağıtmanız gerekir.

Android Studio, kullanıcıları otomatikleştirmek için gelişmiş bir derleme araç seti olan Gradle'ı ve derleme sürecini yönetmenize olanak tanırken en iyi uygulamaları görelim. Her derleme yapılandırması kendi kod kümesini tanımlayabilir uygulamanızın tüm sürümlerinde ortak bölümleri yeniden kullanırken Android Gradle eklentisi, derleme araç setiyle birlikte çalışarak oluşturma ve teste özel süreçler ve yapılandırılabilir ayarlar Android uygulamaları.

Gradle ve Android Gradle eklentisi, Android Studio'dan bağımsız olarak çalışır. Bu demek oluyor ki, Android uygulamalarınızı Android Studio, komut satırını kullanarak veya Android Studio'nun sürekli entegrasyon sunucuları gibi herhangi bir yerde yüklü olması gerekir.

Bunu kullanmıyorsanız uygulamanızı geliştirmek ve çalıştırmak için komut satırına ekleyin. İster isteseniz bile derlemenin çıktısı aynıdır. komut satırından, uzak bir makinede veya makine öğrenimi Android Studio'ya gidin.

Not: Gradle ve Android Gradle eklentisi çalıştığından bağımsız olarak Android Studio'dan bağımsız olarak ayrı olarak düzenleyebilirsiniz. Gradle'ı nasıl güncelleyeceğinizi öğrenmek için sürüm notlarını okuyun ve Android Gradle eklentisi hakkında daha fazla bilgi edinin.

Android derleme sisteminin esnekliği sayesinde özel uygulamanızın temel kaynak dosyalarını değiştirmeden yapılandırma derleyebilirsiniz. Bu sayfası Android derleme sisteminin nasıl çalıştığını ve birden fazla derleme yapılandırmasını özelleştirip otomatikleştirmenize yardımcı olabilir. Şu durumda: uygulamanızı dağıtma hakkında daha fazla bilgi edinmek istiyorsanız Uygulamanızı geliştirme ve çalıştırma başlıklı makaleyi inceleyin. Özel alan oluşturmaya başlamak için yapılandırmanızı hemen bkz. Derlemeyi yapılandırma varyantları.

Derleme süreci

Derleme süreci, projenizi geliştiren birçok araç ve süreci içerir

Android Gradle eklentisi, derleme işleminin büyük kısmını sizin için gerçekleştirir, ancak isterseniz geliştirme sürecinin belirli yönlerini anlamanız açısından faydalıdır. gereksinimlerinizi karşılayacak şekilde oluşturmuş olmalısınız.

Farklı projelerin farklı yapı hedefleri olabilir. Örneğin, Arkadaş Bitkiler projesinin Android Arşivi (AAR) veya Java Arşivi (JAR) oluşturan üçüncü taraf kütüphanesi kitaplıklar. Ancak en yaygın proje türü ve uygulama derlemesi uygulamadır. projenizin dağıtabileceğiniz bir hata ayıklama veya sürüm APK'sını ya da AAB'sini oluşturur, ya da harici kullanıcılara yayınlamasını sağlar.

Bu sayfa uygulama geliştirmeye, Ancak derleme adımlarının ve kavramların çoğu, çoğu derleme türünde ortaktır.

Android derleme sözlüğü

Gradle ve Android Gradle eklentisi aşağıdaki özellikleri yapılandırmanıza yardımcı olur hakkında daha fazla bilgi edinin:

Derleme türleri

Derleme türleri, Gradle'ın derleme ve derleme sırasında kullandığı belirli özellikleri en iyi uygulamaları paylaşacağız. Derleme türleri genellikle farklı aşamalarında önemlidir.

Örneğin, hata ayıklama derleme türü hata ayıklama seçeneklerini etkinleştirir ve uygulamayı hata ayıklama anahtarıyla imzalarken sürüm derleme türü küçültebilir, kodunu karartabilir ve uygulamanızı bir sürümle imzalayabilir tuşu.

Şu özelliklere sahip en az bir derleme türü tanımlamanız gerekir: yardımcı olabilir. Android Studio, hata ayıklama ve sürüm derleme türlerini oluşturur varsayılan olarak. Uygulamanızın paketleme ayarlarını özelleştirmeye başlamak için derlemeyi yapılandırmak için türler olarak tanımlar.

Ürün aromaları
. Ürün aromaları, uygulamanızın farklı versiyonlarını temsil eder: ücretsiz ve ücretli sürümler gibi) sağlayabilir. Şunları yapabilirsiniz: paylaşım sırasında farklı kod ve kaynaklar kullanmak için ürün aromalarını özelleştirin ve uygulamanızın tüm sürümlerinde ortak olan kısımları yeniden kullanmak. Ürün aroma isteğe bağlıdır ve bunları manuel olarak oluşturmanız gerekir. Oluşturmaya başlamak için almak için, Google Etiket Yöneticisi'ni kullanarak uygulamanın daha fazla bilgi edinebilirsiniz.
Derleme varyantları
. Derleme varyantı, derleme türü ile ürün çeşidinin çapraz ürünüdür ve Gradle'ın uygulamanızı geliştirmek için kullandığı yapılandırmadır. Derleme varyantlarını kullanarak Geliştirme sırasında ürün aromalarınızın hata ayıklama sürümünü oluşturabilirsiniz ve imzalı yayın sürümlerini kullanıma sunmaya hazırlanıyoruz. Derleme varyantlarını doğrudan yapılandırmasanız da oluşturma türlerini ve ürün aromalarını konuşacağız. Ek derleme oluşturma türleri veya ürün aromaları, ek derleme varyantları oluşturur. Öğrenmek için derleme varyantlarını oluşturma ve yönetme hakkında bilgi için Derleme varyantlarını yapılandırma genel bakış.
Manifest girişleri
. Derlemede manifest dosyasının bazı özellikleri için değerler belirtebilirsiniz yapılandırmanın üç yolu vardır. Bu derleme değerleri, manifest dosyasıdır. Birden fazla varyant oluşturmak istiyorsanız bu yöntem yararlıdır uygulamanızın farklı bir uygulama adı, minimum SDK sürümü veya hedef SDK sürümü. Birden fazla manifest mevcut olduğunda, birleştirme aracı manifest ayarlarını birleştirir.
Bağımlılıklar
. Derleme sistemi, proje bağımlılıklarını yerel dosya sisteminizden yönetir uzaktaki depolardan yararlanabilirsiniz. Bu, bir öğeyi manuel olarak bağımlılıklarınızın ikili paketlerini arayıp indirin ve kopyalayıp proje dizinini oluşturur. Daha fazla bilgi edinmek için Derleme ekleme bölümüne bakın. bağımlılıklarını görebilirsiniz.
İmzalama
. Derleme sistemi, derlemede imzalama ayarlarını belirlemenizi sağlar ve derleme sırasında uygulamanızı otomatik olarak imzalayabilir. bahsedeceğim. Derleme sistemi, hata ayıklama sürümünü varsayılan bir anahtarla imzalar ve derleme sırasında şifre istemi almamak için bilinen kimlik bilgilerini kullanan sertifika gerekir. Derleme sistemi siz eklemediğiniz sürece sürüm sürümünü imzalamaz. bu derleme için açıkça bir imzalama yapılandırması tanımlayın. Şunu yapmazsanız: Sürüm anahtarınız varsa Uygulamanızı imzalama bölümünde açıklandığı gibi bir sürüm anahtarı oluşturabilirsiniz. İmzalanmış sürüm derlemeleri uygulamaların çoğu uygulama mağazası üzerinden dağıtımı için gereklidir.
Kod ve kaynak daraltma
. Derleme sistemi şunun için farklı bir ProGuard kural dosyası belirtebilmenizi sağlar: her derleme varyantı için ayrı bir metin sunar. Derleme sistemi, uygulamanızı oluştururken küçültmek için uygun kurallar kümesini kodunuzu ve kaynaklarınızı R8 gibi yerleşik küçültme araçlarını kullanarak. Kodunuzu ve kaynaklarınızı küçültmek, APK veya AAB boyutunuzu azaltmanıza yardımcı olabilir.
Birden fazla APK desteği
. Derleme sistemi, uygulamanızın kullandığı farklı APK'ları otomatik olarak Her biri yalnızca gereken kod ve kaynakları Uygulama İkili Arabirimi'ni (ABI) kullanabilirsiniz. Daha fazla bilgi için bkz. Birden fazla APK oluşturma Ancak tek bir AAB yayınlamak önerilen yaklaşımdır çünkü bu yaklaşımda dile göre ayırma olanağı yükleme zorunluluğunu ortadan kaldırırken ekran yoğunluğu ile ABI'yı Google Play'e yükleyebilirsiniz. Ağustos 2021'den sonra gönderilen tüm yeni uygulamalar AAB kullanmak için gereklidir.

Android derlemelerinde Java sürümleri

Kaynak kodunuz ister Java, ister Kotlin, isterse her iki dilde olsun JDK veya Java dili seçmeniz gereken birkaç yer var sürümü olarak düşünebilirsiniz. Android derlemelerindeki Java sürümleri sayfasına göz atın inceleyebilirsiniz.

Yapılandırma dosyaları oluşturma

Özel derleme yapılandırmaları oluşturmak için daha fazla derleme yapılandırma dosyası yükleyebilirsiniz. Bu düz metin dosyalarında, DMAIC ve Yalın Altı Sigma yaklaşımının yanı sıra aşağıdakileri kullanarak derleme mantığını değiştirebilirsiniz: Kotlin komut dosyası, Bu, Kotlin dilinin bir çeşididir. Ayrıca şunu da kullanabilirsiniz: Groovy, Java Sanal Makinesi'ne (JVM) özel dinamik dil kullanarak derlemelerinizi yapılandırın.

Chrome'u yapılandırmaya başlamak için Kotlin komut dosyasını veya Groovy'yi çünkü Android Gradle eklentisi çoğu DSL öğesini kullanıma sunduğundan ihtiyacınız olacak. Android Gradle eklentisi DSL hakkında daha fazla bilgi edinmek için şu makaleyi okuyun: DSL referans belgeleri. Kotlin komut dosyası ayrıca temel Gradle Kotlin DSL

Yeni bir projeye başlarken Android Studio, otomatik olarak bu dosyaları sizin için oluşturur ve makul varsayılanlara göre doldurur. Proje dosya yapısı aşağıdaki düzendedir:

└── MyApp/  # Project
    ├── gradle/
    │   └── wrapper/
    │       └── gradle-wrapper.properties
    ├── build.gradle(.kts)
    ├── settings.gradle(.kts)
    └── app/  # Module
    │   ├── build.gradle(.kts)
    │   ├── build/
    │   ├── libs/
    │   └── src/
    │        └── main/  # Source set
    │            ├── java/
    │            │   └── com.example.myapp
    │            ├── res/
    │            │   ├── drawable/
    │            │   ├── values/
    │            │   └── ...
    │            └── AndroidManifest.xml

Aşağıdaki Gradle derleme yapılandırma dosyaları standart proje yapısı oluşturmaya çalıştık. Başlamadan önce yapılandırdıktan sonra, uygulamanızın kapsamını ve amacını anlamak temel DSL öğelerini inceleyin.

Gradle Sarmalayıcı dosyası

Gradle sarmalayıcı (gradlew), Gradle'ı indirip başlatan bir kaynak kodu oluşturabilirsiniz. Bu da daha tutarlı derleme yürütmesi sağlar. Geliştiriciler şunu indirir: gradlew komutunu çalıştırın. Bu işlem, gerekli Gradle'ı indirir dağıtmanızı sağlar ve uygulamanızı oluşturmak için Gradle'ı başlatır.

gradle/wrapper/gradle-wrapper.properties dosyası aşağıdaki kodu içeren bir özellik (distributionUrl) içerir: Gradle, derlemenizi çalıştırmak için kullanılır.

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

Gradle ayarları dosyası

settings.gradle.kts dosyası (Kotlin DSL için) veya settings.gradle dosyası (Groovy DSL için) kök dizinde proje dizinini oluşturur. Bu ayarlar dosyası, proje düzeyindeki depoyu tanımlar ve Gradle'a uygulamanızı oluştururken hangi modülleri içermesi gerektiğini bildirir. uygulamasını indirin. Çok modüllü projelerde yer alması gereken her bir modülün belirtilmesi, inşa ediyoruz.

Çoğu projede dosya varsayılan olarak aşağıdaki gibi görünür:

Kotlin

pluginManagement {

    /**
      * The pluginManagement.repositories block configures the
      * repositories Gradle uses to search or download the Gradle plugins and
      * their transitive dependencies. Gradle pre-configures support for remote
      * repositories such as JCenter, Maven Central, and Ivy. You can also use
      * local repositories or define your own remote repositories. The code below
      * defines the Gradle Plugin Portal, Google's Maven repository,
      * and the Maven Central Repository as the repositories Gradle should use to look for its
      * dependencies.
      */

    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}
dependencyResolutionManagement {

    /**
      * The dependencyResolutionManagement.repositories
      * block is where you configure the repositories and dependencies used by
      * all modules in your project, such as libraries that you are using to
      * create your application. However, you should configure module-specific
      * dependencies in each module-level build.gradle file. For new projects,
      * Android Studio includes Google's Maven repository and the Maven Central
      * Repository by default, but it does not configure any dependencies (unless
      * you select a template that requires some).
      */

  repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
  repositories {
      google()
      mavenCentral()
  }
}
rootProject.name = "My Application"
include(":app")

Eski

pluginManagement {

    /**
      * The pluginManagement.repositories block configures the
      * repositories Gradle uses to search or download the Gradle plugins and
      * their transitive dependencies. Gradle pre-configures support for remote
      * repositories such as JCenter, Maven Central, and Ivy. You can also use
      * local repositories or define your own remote repositories. The code below
      * defines the Gradle Plugin Portal, Google's Maven repository,
      * and the Maven Central Repository as the repositories Gradle should use to look for its
      * dependencies.
      */

    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}
dependencyResolutionManagement {

    /**
      * The dependencyResolutionManagement.repositories
      * block is where you configure the repositories and dependencies used by
      * all modules in your project, such as libraries that you are using to
      * create your application. However, you should configure module-specific
      * dependencies in each module-level build.gradle file. For new projects,
      * Android Studio includes Google's Maven repository and the Maven Central
      * Repository by default, but it does not configure any dependencies (unless
      * you select a template that requires some).
      */

    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}
rootProject.name = "My Application"
include ':app'

Üst düzey derleme dosyası

Üst düzey build.gradle.kts dosyası (Kotlin DSL için) veya build.gradle dosyası (Groovy DSL için) kök dizinde proje dizinini oluşturur. Genellikle, genellikle kullanılan eklentilerin yaygın sürümlerini modüllere göre değerlendireceksiniz.

Aşağıdaki kod örneğinde, üst düzey derleme komut dosyasını geri yükleyin:

Kotlin

plugins {

    /**
     * Use `apply false` in the top-level build.gradle file to add a Gradle
     * plugin as a build dependency but not apply it to the current (root)
     * project. Don't use `apply false` in sub-projects. For more information,
     * see Applying external plugins with same version to subprojects.
     */

    id("com.android.application") version "8.5.0" apply false
    id("com.android.library") version "8.5.0" apply false
    id("org.jetbrains.kotlin.android") version "1.9.23" apply false
}

Eski

plugins {

    /**
     * Use `apply false` in the top-level build.gradle file to add a Gradle
     * plugin as a build dependency but not apply it to the current (root)
     * project. Don't use `apply false` in sub-projects. For more information,
     * see Applying external plugins with same version to subprojects.
     */

    id 'com.android.application' version '8.5.0' apply false
    id 'com.android.library' version '8.5.0' apply false
    id 'org.jetbrains.kotlin.android' version '1.9.23' apply false
}