Android Gradle eklentisi 4.0, Gradle derlemenizde Kotlin kullanımı için destek ekledi Groovy'nin yerine kullanabileceğiniz, genellikle Gradle yapılandırma dosyalarında kullanılır.
Gradle senaryoları için Groovy yerine Kotlin tercih ediliyor çünkü Kotlin daha okunaklıdır ve daha iyi derleme zamanı denetimi ve IDE desteği sunar.
Kotlin şu anda Android Studio’nun koduyla daha iyi entegrasyon sağlasa da Groovy ile karşılaştırıldığında, Kotlin kullanan derlemeler kullanarak geliştirir. Bu nedenle, çalışma yapmaya karar verirken taşıma.
Bu sayfada, Android uygulamanızın Groovy'den Kotlin'e Gradle derleme dosyaları. Daha kapsamlı bir taşıma işlemi için lütfen Gradle'ın web sitesine bakın resmi dokümanlara bakın.
Zaman Çizelgesi
Android Studio Giraffe'tan başlayarak yeni projelerde Kotlin DSL kullanılıyor
Derleme yapılandırması için varsayılan olarak (build.gradle.kts
). Bu sayede,
Groovy DSL'ye (build.gradle
) göre söz dizimiyle düzenleme deneyimi
vurgulama, kod tamamlama ve beyanlara gitme. Daha fazla bilgi edinmek için
bkz.
Gradle Kotlin DSL Primer.
Genel terimler
Kotlin DSL: Öncelikli olarak Android Gradle eklentisi Kotlin DSL'yi ifade eder. veya bazen temeldeki Gradle Kotlin DSL.
Bu geçiş rehberindeki "Kotlin" ve "Kotlin DSL" birbirlerinin yerine kullanılır. Benzer şekilde, "Groovy" ve "Groovy DSL" birbirlerinin yerine kullanılır.
Komut dosyası dosyasını adlandırma
Komut dosyası uzantısı adları, derleme dosyasının yazıldığı dile bağlıdır içinde:
- Groovy'de yazılan Gradle derleme dosyaları,
.gradle
dosya adı uzantısını kullanır. - Kotlin'de yazılan Gradle derleme dosyalarında
.gradle.kts
dosya adı kullanılır uzantısına sahip olur.
Söz dizimini dönüştürme
Groovy ve Kotlin arasındaki söz diziminde bazı genel farklılıklar vardır. Bu nedenle, bu değişiklikleri derleme komut dosyalarınıza uygulamanız gerekir.
Yöntem çağrılarına parantez ekleyin
Groovy, yöntem çağrılarında parantezleri atlamanıza olanak tanırken Kotlin bunu gerektirir gerekir. Yapılandırmanızı taşımak için aşağıdaki türlere parantez ekleyin: yöntemini çağırın. Bu kod, Groovy'de bir ayarın nasıl yapılandırılacağını gösterir:
compileSdkVersion 30
Bu, Kotlin'de yazılan kodla aynıdır:
compileSdkVersion(30)
=
adlı kişiyi atama çağrılarına ekle
Groovy DSL, aşağıdaki durumlarda =
atama operatörünü atlamanıza
Kotlin için gerekli olan özelliklerdir. Bu kod,
Groovy'de özellik atayın:
java {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
Bu kodda, Kotlin'de özelliklerin nasıl atanacağı gösterilmektedir:
java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
Dizeleri dönüştürme
Groovy ve Kotlin arasındaki dize farkları şunlardır:
- Dizeler için çift tırnak işareti: Groovy, dizelerin tek tırnak kullanılarak tanımlanmasına olanak tanırken Kotlin çift tırnak işareti.
-
Noktalı ifadelerde dize interpolasyonu: Groovy'de, için yalnızca
$
önekini dize interpolasyonları ancak Kotlin, noktalı ifadeleri süslü ayraçlarla sarmanızı gerektirir. Örneğin, Groovy'de$project.rootDir
olarak ayarlayın:myRootDirectory = "$project.rootDir/tools/proguard-rules-debug.pro"
Ancak Kotlin'de, önceki kod şurada
toString()
işlevini çağırır:project
,project.rootDir
değil. Değeri almak için kök dizinin${project.rootDir}
ifadesini sarmalayın. kullanın:myRootDirectory = "${project.rootDir}/tools/proguard-rules-debug.pro"
Daha fazla bilgi edinmek için bkz. Dize şablonları hakkındaki makalemizi incelemenizi öneririz.
Dosya uzantılarını yeniden adlandırma
İçeriğini taşırken her derleme dosyasına .kts
ekleyin. Örneğin,
settings.gradle
dosyası gibi bir derleme dosyası seçin. Dosyayı şu şekilde yeniden adlandır:
settings.gradle.kts
ve dosyanın içeriğini Kotlin biçimine dönüştürün. Lütfen
Her derleme dosyasının taşınmasından sonra proje derlemeye devam eder.
Önce en küçük dosyalarınızı taşıyın, deneyim kazanın ve daha sonra devam edin. Şunları yapabilirsiniz: bir projede Kotlin ve Groovy derleme dosyalarını karışık olarak kullanabilirsiniz, bu nedenle dikkatli bir şekilde yapın.
def
değerini val
veya var
ile değiştirin
def
değerini val
veya var
ile değiştirin.
Kotlin'de değişkenleri nasıl tanımladığınız.
Bu, Groovy'deki bir değişken bildirimidir:
def building64Bit = false
Bu, Kotlin'de yazılan kodla aynıdır:
val building64Bit = false
Boole özelliklerinin önüne is
ekle
Groovy, mülk kesinti mantığını kullanıyor
özellik adlarını temel alır. foo
boole özelliği için, çıkarılmış yöntemleri
getFoo
, setFoo
veya isFoo
olabilir. Bir zamanlar Kotlin'e dönüştürüldükten sonra
özellik adlarını, çıkarılan yöntemlerle değiştirmeniz gerekiyor.
Google Analytics 4'te tarama yapar. Örneğin,
buildTypes
DSL boole öğeleri; bunların önüne is
işareti koymanız gerekir. Bu kod
Groovy'de boole özelliklerinin nasıl ayarlanacağını gösterir:
android {
buildTypes {
release {
minifyEnabled true
shrinkResources true
...
}
debug {
debuggable true
...
}
...
Aşağıdaki kod, Kotlin'dekiyle aynıdır. Özelliklerin
is
tarafından.
android {
buildTypes {
getByName("release") {
isMinifyEnabled = true
isShrinkResources = true
...
}
getByName("debug") {
isDebuggable = true
...
}
...
Listeleri ve haritaları dönüştürün
Groovy ve Kotlin'deki listeler ve haritalar farklı söz dizimi kullanılarak tanımlanır. Eski
[]
kullanıyor. Kotlin ise koleksiyon oluşturma yöntemlerini açıkça şunu kullanarak çağırıyor:
listOf
veya mapOf
. Aşağıdaki durumlarda []
yerine listOf
veya mapOf
koyun:
yardımcı olur.
Groovy ve Kotlin'de liste şu şekilde tanımlanır:
jvmOptions += ["-Xms4000m", "-Xmx4000m", "-XX:+HeapDumpOnOutOfMemoryError</code>"]
Bu, Kotlin'de yazılan kodla aynıdır:
jvmOptions += listOf("-Xms4000m", "-Xmx4000m", "-XX:+HeapDumpOnOutOfMemoryError")
Groovy ve Kotlin'de bir haritayı şu şekilde tanımlayabilirsiniz:
def myMap = [key1: 'value1', key2: 'value2']
Bu, Kotlin'de yazılan kodla aynıdır:
val myMap = mapOf("key1" to "value1", "key2" to "value2")
Derleme türlerini yapılandırma
Kotlin DSL'de yalnızca hata ayıklama ve sürüm derleme türleri kullanılabilir dolaylı yoldan olabilir. Diğer tüm özel derleme türleri manuel olarak oluşturulmalıdır.
Groovy'de hata ayıklama, sürüm ve diğer belirli derleme türlerini
önce onları oluşturmanız gerekir. Aşağıdaki kod snippet'i
debug
, release
ve
benchmark
derlemesi
Groovy yazıyor.
buildTypes {
debug {
...
}
release {
...
}
benchmark {
...
}
}
Kotlin'de eşdeğer yapılandırmayı oluşturmak için öncelikle
benchmark
derleme türü.
buildTypes {
debug {
...
}
release {
...
}
register("benchmark") {
...
}
}
Derleme komut dosyasından eklenti bloğuna geç
Derlemeniz
buildscript {}
engellemek istiyorsanız
plugins {}
engelleyebilirsiniz. plugins {}
bloğu, eklentileri uygulamayı kolaylaştırır ve
uyumlu olduğu
sürüm kataloglarını inceleyin.
Ayrıca, derleme dosyalarınızda plugins {}
blokunu kullandığınızda
Android Studio, derleme başarısız olsa bile bağlamı bilir. Bu bağlam
Studio IDE'nin şunu yapmasına olanak tanıdığından Kotlin DSL dosyalarınızda düzeltmeler yapmanıza yardımcı olur
yardımcı olacak başka öneriler de sunun.
Eklenti kimliklerini bulma
buildscript {}
bloğu, eklentileri
"the"
Maven koordinatları
eklentisine (örneğin, com.android.tools.build:gradle:7.4.0
)
plugins {}
bloğu bunun yerine eklenti kimliklerini kullanır.
Çoğu eklentide eklenti kimliği,
apply plugin
Örneğin, aşağıdaki eklenti kimlikleri
Android Gradle Eklentisi:
com.android.application
com.android.library
com.android.lint
com.android.test
Eklenti listesinin tamamını Google Maven deposu.
Kotlin eklentilerine birden fazla eklenti kimliği tarafından referans verilebilir. Şunu kullanmanızı öneririz: ad alanına eklenmiş eklenti kimliğini değiştirebilir ve aşağıdaki tabloda bulabilirsiniz:
Steno eklenti kimlikleri | Ad alanı eklenti kimlikleri |
---|---|
kotlin |
org.jetbrains.kotlin.jvm |
kotlin-android |
org.jetbrains.kotlin.android |
kotlin-kapt |
org.jetbrains.kotlin.kapt |
kotlin-parcelize |
org.jetbrains.kotlin.plugin.parcelize |
Ayrıca, Gradle Eklenti Portalı, Maven Central Repository'dir. ve Google Maven deposu. Okunanlar Özel Gradle Eklentileri Geliştirme inceleyin.
Yeniden düzenleme işlemini gerçekleştirme
Kullandığınız eklentilerin kimliklerini öğrendikten sonra aşağıdaki adımları uygulayın:
buildscript {}
içinde tanımlanan eklentiler için hâlâ depolarınız varsasettings.gradle
adresine taşıyın dosyası olarak kaydedin.Eklentileri üst düzeydeki
plugins {}
bloğuna ekleyinbuild.gradle
dosya Kimliği ve sürümünü burada bulabilirsiniz. Eklentinin kök projeye uygulanacak şekildeapply false
kullanın.Üst düzey
build.gradle.kts
dosyasındanclasspath
girişlerini kaldırın.Eklentileri
plugins {}
modül düzeyindebuild.gradle
dosyasına sahip olursunuz. Yalnızca eklentinin Sürüm kök projeden devralındığı için kimliği burada gösterilir.Eklenti için
apply plugin
çağrısını modül düzeyinden kaldırınbuild.gradle
dosya
Örneğin, şu kurulumda buildscript {}
bloku kullanılır:
// Top-level build.gradle file
buildscript {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
dependencies {
classpath("com.android.tools.build:gradle:7.4.0")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0")
...
}
}
// Module-level build.gradle file
apply(plugin: "com.android.application")
apply(plugin: "kotlin-android")
Bu, plugins {}
bloğunun kullanıldığı eşdeğer bir kurulumdur:
// Top-level build.gradle file
plugins {
id 'com.android.application' version '7.4.0' apply false
id 'org.jetbrains.kotlin.android' version '1.8.0' apply false
...
}
// Module-level build.gradle file
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
...
}
// settings.gradle
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
Eklenti bloğunu dönüştür
plugins {}
bloğundaki eklentileri uygulama, Groovy ve Kotlin'de benzer şekilde uygulanır.
Aşağıdaki kodda,
sürüm katalogları:
// Top-level build.gradle file
plugins {
alias libs.plugins.android.application apply false
...
}
// Module-level build.gradle file
plugins {
alias libs.plugins.android.application
...
}
Aşağıdaki kod, aynı işlemi Kotlin'de nasıl yapacağınızı gösterir:
// Top-level build.gradle.kts file
plugins {
alias(libs.plugins.android.application) apply false
...
}
// Module-level build.gradle.kts file
plugins {
alias(libs.plugins.android.application)
...
}
Aşağıdaki kod, Groovy'de çalışmadığınız (sürüm kataloglarını kullanarak):
// Top-level build.gradle file
plugins {
id 'com.android.application' version '7.3.0' apply false
...
}
// Module-level build.gradle file
plugins {
id 'com.android.application'
...
}
Aşağıdaki kod, aynı işlemi Kotlin'de nasıl yapacağınızı gösterir:
// Top-level build.gradle.kts file
plugins {
id("com.android.application") version "7.3.0" apply false
...
}
// Module-level build.gradle.kts file
plugins {
id("com.android.application")
...
}
plugins {}
engellemesiyle ilgili daha fazla bilgi için bkz. Uygulama
Eklentiler
inceleyebilirsiniz.
Çeşitli
Diğer işlevlerle ilgili Kotlin kod örnekleri için aşağıdakilere bakın belge sayfaları:
- ProGuard yapılandırmanız varsa Daraltmayı, kod karartmayı ve optimizasyonu etkinleştirin.
signingConfig {}
blokunuz varsa İmzalama bilgilerini şuradan kaldırma: derleme dosyalarınız.- Proje genelinde mülkler kullanıyorsanız bkz. Proje genelinde yapılandırma özellikleri hakkında daha fazla bilgi edinin.
Bilinen sorunlar
Şu anda bilinen bir sorun derleme hızının Kotlin ile Groovy'ye göre daha yavaş olabilmesi.
Sorunları bildirme
Sorununuzu belirlemek için ihtiyaç duyduğumuz bilgileri nasıl sağlayabileceğimize ilişkin talimatlar için Derleme araçları ve Gradle hatalarına ilişkin ayrıntılar. Ardından, Google'ı kullanarak hata bildirin herkese açık sorun izleyici.
Diğer kaynaklar
Kotlin ile yazılmış Gradle derleme dosyalarının çalışan bir örneği için Now In Android örnek uygulamasında bulabilirsiniz.