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.
Sözlük
- Java Geliştirme Kiti (JDK)
- .
Java Geliştirme Kiti (JDK)
şunu içerir:
- Derleyici, profil oluşturucu ve arşiv oluşturucu gibi araçlar. Bunlar geliştirme sürecinizin arka planında uygulamanızı oluşturun.
- Cihazınızdan çağırabileceğiniz API'leri içeren kitaplıklar Kotlin veya Java kaynak kodu. Bazı işlevlerin Android'de kullanılabilir.
- Java Sanal Makinesi (JVM), süreçleri yürüten Java uygulamaları. Android Studio IDE'yi çalıştırmak için JVM'yi kullanırsınız. ve Gradle geliştirme aracı. JVM, Android'de kullanılmaz. cihazlar veya emülatörler.
- JetBrains Çalışma Zamanı (JBR)
- . JetBrains Çalışma Zamanı (JBR) , Android Studio ile dağıtılan gelişmiş bir JDK'dır. Studio ve ilgili JetBrain'lerde kullanım için çeşitli optimizasyonlar içerir ancak diğer Java uygulamalarını çalıştırmak için de kullanılabilir.
Android Studio'yu çalıştırmak için bir JDK'yı nasıl seçebilirim?
Android Studio'yu çalıştırmak için JBR'yi kullanmanızı öneririz. Dağıtıldı
ve Android Studio ile test etmek için kullanılır. Optimum düzeyde performans için geliştirmeler
Android Studio kullanımı. Bunu sağlamak için STUDIO_JDK
özelliğini ayarlamayın.
ortam değişkeni
Android Studio için başlangıç komut dosyaları aşağıda bir JVM'yi arar. sipariş:
STUDIO_JDK
ortam değişkenistudio.jdk
dizini (Android Studio dağıtımında)- Android Studio'da
jbr
dizini (JetBrains Runtime), ya da Önerilir. JDK_HOME
ortam değişkeniJAVA_HOME
ortam değişkeniPATH
ortam değişkenindejava
yürütülebilir dosya
Gradle derlemelerimi hangi JDK'nin çalıştıracağını nasıl seçebilirim?
Gradle'ı Android Studio'daki düğmeleri kullanarak çalıştırırsanız JDK,
Gradle'ı çalıştırmak için Android Studio ayarları kullanılır. Gradle'ı bir terminalde çalıştırırsanız
JAVA_HOME
ortam değişkeni
(ayarlanırsa) Gradle komut dosyalarını hangi JDK'nın çalıştıracağını belirler. Eğer JAVA_HOME
ise
ayarlanmadığında PATH
ortamınızda java
komutunu kullanır
değişkenine eklenmelidir.
En tutarlı sonuçlar için JAVA_HOME
ayarınızı yaptığınızdan emin olun
ve
Android Studio'daki JDK yapılandırmasını aynı şekilde
JDK
Gradle, derlemenizi çalıştırırken arka plan programı adı verilen yapmalarına yardımcı olur. Bu işlem yeniden kullanılabilir, ancak derlemeler aynı JDK ve Gradle sürümünü kullanıyor. Yeniden kullanılıyor arka plan programı, yeni bir JVM başlatma ve derleme sistemini başlatma süresini kısaltır.
Farklı JDK veya Gradle sürümleriyle derleme başlatırsanız arka plan programları oluşturulur. Bu da daha fazla CPU ve bellek tüketir.
Android Studio'da Gradle JDK yapılandırması
Mevcut projenin Gradle JDK yapılandırmasını değiştirmek için Gradle'ı açın Dosya'dan (veya macOS'te Android Studio'da) > Ayarlar > Derleme, Yürütme, Dağıtım > Derleme Araçları > Gradle'a dokunun. Gradle JDK açılır menüde, aşağıdaki seçeneklerden birini tercih edebilirsiniz:
JAVA_HOME
veGRADLE_LOCAL_JAVA_HOME
gibi makrolarvendor-version
biçimindekijbr-17
gibi depolanan JDK tablosu girişleri Android yapılandırma dosyalarında- JDK indirme
- Belirli bir JDK ekleme
- İşletim sisteminin varsayılan JDK kurulumundan yerel olarak algılanan JDK'ler dizin
Belirlenen seçenek,gradleJvm
projenin .idea/gradle.xml
dosyası ve JDK yol çözünürlüğü
Android Studio ile başlatıldığında Gradle.
Makrolar, dinamik proje JDK yolu seçimini etkinleştirir:
JAVA_HOME
: Aynı ada sahip ortam değişkenini kullanırGRADLE_LOCAL_JAVA_HOME
:java.home
özelliğini kullanır..gradle/config.properties
dosyasıyla otomatik olarak oluşturulur.
Seçilen JDK, Gradle derlemenizi çalıştırmak ve JDK API'yi çözmek için kullanılır
referansları almanız gerekir. Lütfen
belirtildiğinde compileSdk
, Java sembollerinin kullanımını daha da kısıtlar
oluştururken kullanabileceğiniz
birçok özellik vardır.
JDK'dan daha yüksek veya ona eşit bir JDK sürümü seçtiğinizden emin olun kullandığınız eklentiler tarafından kullanılan sürümler hakkında daha fazla bilgi edinin. Şunu belirlemek için: Android Gradle Eklentisi (AGP) için gereken minimum JDK sürümü hakkında daha fazla bilgi için uyumluluk tablosunu sürüm notlarına ekleyin.
Örneğin, Android Gradle Eklentisi sürüm 8.x için JDK 17 gerekir. Eski bir sürümle birlikte kullanan bir Gradle derlemesi çalıştırmaya şuna benzer bir mesaj bildirir:
An exception occurred applying plugin request [id: 'com.android.application']
> Failed to apply plugin 'com.android.internal.application'.
> Android Gradle plugin requires Java 17 to run. You are currently using Java 11.
Your current JDK is located in /usr/local/buildtools/java/jdk11
You can try some of the following options:
- changing the IDE settings.
- changing the JAVA_HOME environment variable.
- changing `org.gradle.java.home` in `gradle.properties`.
Java veya Kotlin kaynak kodumda hangi Java API'lerini kullanabilirim?
Bir Android uygulaması, JDK'da tanımlanan API'lerden bazılarını kullanabilir, ancak tüm API'ler
sağlayabilir. Android SDK'sı birçok Java kitaplık işlevinin uygulamalarını tanımlar
olduğunu varsayalım. compileSdk
özelliği,
Kotlin veya Java kaynak kodunuzu derlerken kullanılacak Android SDK sürümü.
Kotlin
android {
...
compileSdk = 33
}
Eski
android {
...
compileSdk 33
}
Android'in her sürümü, JDK'nın belirli bir sürümünü ve
API'lerini kullanabilirsiniz. Şurada bulunan bir Java API'sı kullanıyorsanız:
belirtilen bölgede bulunmayan bir compileSdk
minSdk
, API'yi kullanabilirsiniz
Android'in önceki sürümünde kullanılabilecek bir işlemle
detogaring.
Destekler için Desugaring yoluyla kullanılabilen Java 11+ API'leri sayfasına göz atın
API'ler.
tarafından desteklenen Java sürümünü belirlemek için bu tabloyu kullanın ve hangi Java API'lerinin kullanılabilir olduğuyla ilgili ayrıntıları nerede bulabileceğinizi öğrenebilirsiniz.
Android | Java | Desteklenen API ve dil özellikleri |
---|---|---|
14 (API 34) | 17 | Temel kitaplıklar |
13 (API 33) | 11 | Temel kitaplıklar |
12 (API 32) | 11 | Java API'si |
11 ve altı | Android sürümleri |
Java kaynak kodumu hangi JDK derler?
Java araç zinciri JDK, herhangi bir Java'yı derlemek için kullanılan Java derleyicisini içerir. kaynak kodudur. Bu JDK, ayrıca derleme sırasında javadoc ve birim testlerini çalıştırır.
Araç zinciri, Gradle'ı çalıştırmak için kullanılan JDK'yi varsayılan olarak kullanır. Varsayılan değeri kullanıyorsanız ve derlemeyi farklı makinelerde (örneğin, yerel makineniz ayrı bir Sürekli Entegrasyon sunucusu), derlemenizin sonuçları farklı JDK sürümleri kullanılırsa farklılık gösterebilir.
Daha tutarlı bir derleme oluşturmak için, örneğin bir projenizde Java araç zinciri sürümü. Bunu belirtmek gerekirse:
- Derlemeyi çalıştıran sistemde uyumlu bir JDK bulur.
- Uyumlu bir JDK yoksa (ve bir araç zinciri çözümleyicisi tanımlanmışsa) bir tane indirir.
- Kaynak kodundan gelen çağrılar için araç zinciri Java API'lerini sunar.
- Java kaynağını, Java dili sürümünü kullanarak derler.
sourceCompatibility
vetargetCompatibility
.
Java araç zincirini her zaman belirtmenizi ve belirtilen JDK yüklüyse veya araç zinciri çözümleyici ele alacağız.
Kaynak kodunuzun Java'da yazılıp yazılmadığını, araç zincirini
Kotlin ya da her ikisi. Modülünüzün en üst düzeyinde araç zincirini
build.gradle(.kts)
dosyası yükleyin.
Java araç zinciri sürümünü şu şekilde belirtin:
Kotlin
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
Eski
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
Kaynağınız Kotlin, Java veya her ikisinin bir karışımıysa bu yöntem işe yarar.
Araç zinciri JDK sürümü, Gradle'ı çalıştırmak için kullanılan JDK ile aynı olabilir ancak farklı amaçlara hizmet ettiğini unutmayın.
Java kaynak kodumda hangi Java dili kaynak özelliklerini kullanabilirim?
sourceCompatibility
özelliği, hangi Java dili özelliklerini belirler?
, Java kaynağının derlenmesi sırasında kullanılabilir.
Kotlin kaynağını etkilemez.
Herhangi bir değer belirtilmediyse varsayılan olarak Java araç zinciri veya
JDK eskiden Gradle'ı çalıştırıyordu. Hedeflerinizi her zaman açıkça belirtmenizi öneririz:
bir araç zinciri (tercih edilir) veya sourceCompatibility
.
Modülünüzün build.gradle(.kts)
dosyasında sourceCompatibility
öğesini belirtin.
Kotlin
android {
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
}
}
Eski
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
}
}
Kotlin veya Java kaynağımı derlerken hangi Java ikili programı özellikleri kullanılabilir?
targetCompatibility
ve jvmTarget
belirtildiğinde Java'yı belirler
derlenmiş Java ve Kotlin için bayt kodu oluştururken kullanılan sınıf biçimli sürüm
kaynak bölümüne yerleştirin.
Bazı Kotlin özellikleri, eşdeğer Java özellikleri eklenmeden önce mevcuttu.
İlk Kotlin derleyicileri, bu Kotlin'leri temsil etmek için kendi yöntemlerini oluşturmak zorunda kaldı.
özellikleri. Bu özelliklerden bazıları daha sonra Java'ya eklendi.
Daha sonraki jvmTarget
seviyelerinde Kotlin derleyicisi,
isteyerek daha iyi performans sağlayabilir.
targetCompatibility
, varsayılan olarak
sourceCompatibility
,
ancak belirtilirse sourceCompatibility
değerinden büyük veya buna eşit olmalıdır.
jvmTarget
varsayılan olarak araç zinciri sürümüne ayarlanır.
Android'in farklı sürümleri farklı Java sürümlerini destekler. Şunları yapabilirsiniz:
iyi bir performans gösterecek ve bunu
targetCompatibility
ve jvmTarget
. Ancak bu işlem şunları da zorunlu kılabilir:
artır
minimum Android SDK sürümünün
yararlanabilirsiniz.
Kotlin
android {
compileOptions {
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
}
Eski
android {
compileOptions {
targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget '17'
}
}