سواء كان رمز المصدر مكتوبًا بلغة Java أو Kotlin أو كليهما، هناك العديد من الأماكن التي يجب عليك فيها اختيار لغة JDK أو Java لإصدارك المناسب.
مسرد المصطلحات
- حزمة تطوير Java (JDK)
-
مجموعة أدوات تطوير Java (JDK)
تحتوي على:
- الأدوات، مثل التجميع والمحلل ومنشئ الأرشيف. تُستخدم هذه الفيديوهات وراء الكواليس خلال عملية الإنشاء إنشاء التطبيق الخاص بك.
- المكتبات التي تحتوي على واجهات برمجة التطبيقات التي يمكنك الاتصال بها من رمز مصدر Kotlin أو Java. لاحظ أنه ليست كل الدوال المتوفرة على أجهزة Android.
- جهاز Java الافتراضي (JVM) هو برنامج ترجمة يقوم بتنفيذ تطبيقات Java. يمكنك استخدام آلة متجه الدعم لتشغيل بيئة تطوير البرامج (IDE) الخاصة بـ "استوديو Android" وأداة إنشاء Gradle. لا يتم استخدام JVM على Android الأجهزة أو المحاكيات.
- وقت تشغيل JetBrains (JBR)
- وقت تشغيل JetBrains (JBR) هو نظام JDK محسّن يتم توزيعه من خلال "استوديو Android". تتضمّن الأداة العديد من التحسينات لاستخدامها في "استوديو YouTube" وJetBrains ذات الصلة ولكن يمكن استخدامها أيضًا لتشغيل تطبيقات Java الأخرى.
كيف أختار JDK لتشغيل "استوديو Android"؟
ننصحك باستخدام JBR لتشغيل "استوديو Android". لقد تم نشره
الذي يتيح اختبار "استوديو Android" واستخدامه لاختباره، كما يشمل تحسينات
استخدامك لـ "استوديو Android". لضمان ذلك، لا تضبط STUDIO_JDK
.
متغير البيئة.
تبحث النصوص البرمجية لبدء التشغيل في "استوديو Android" عن JVM على النحو التالي الترتيب:
- متغيّر بيئة واحد (
STUDIO_JDK
) - دليل
studio.jdk
(في توزيعة "استوديو Android") - دليل
jbr
(وقت تشغيل JetBrains)، في "استوديو Android" التوزيع. يُنصح به. - متغيّر بيئة واحد (
JDK_HOME
) - متغيّر بيئة واحد (
JAVA_HOME
) java
قابل للتنفيذ في متغيّر البيئةPATH
.
كيف أختار نظام JDK الذي يدير إصدارات Gradle الخاصة بي؟
إذا شغّلت Gradle باستخدام الأزرار في Android Studio، فسيتم تعيين JDK في
تُستخدَم إعدادات "استوديو Android" لتشغيل Gradle. فإذا شغَّلت Gradle في وحدة طرفية،
سواء داخل "استوديو Android" أو خارجه، هي متغيّر بيئة JAVA_HOME
(إذا تم ضبطها) تحدد JDK نصوص Gradle البرمجية. إذا JAVA_HOME
لم يتم ضبطها، ستستخدم الأمر java
في بيئة PATH
.
المتغير.
للحصول على النتائج الأكثر اتساقًا، احرص على ضبط JAVA_HOME
.
ومتغير البيئة،
ضبط Gradle JDK في "استوديو Android" على الإعدادات نفسها
JDK.
عند تشغيل التصميم، تنشئ Gradle عملية تسمى برنامج خفي لأداء التصميم الفعلي. يمكن إعادة استخدام هذه العملية، طالما أن الإصدارات تستخدم نفس إصدار JDK وGradle. إعادة الاستخدام برنامج خفي يقلل الوقت اللازم لبدء تشغيل جهاز JVM جديد وتهيئة نظام التصميم.
إذا بدأت إنشاءات باستخدام إصدارات JDK أو Gradle مختلفة، البرامج الخفية، وتستهلك قدرًا أكبر من وحدة المعالجة المركزية (CPU) والذاكرة.
ضبط Gradle JDK في "استوديو Android"
لتعديل تهيئة Gradle JDK للمشروع الحالي، افتح Gradle الإعدادات من File (ملف) (أو Android Studio على نظام التشغيل macOS) > الإعدادات > الإنشاء والتنفيذ والنشر > أدوات الإنشاء > Gradle. برنامج Gradle JDK تحتوي القائمة المنسدلة على الخيارات التالية للاختيار من بينها:
- وحدات ماكرو مثل
JAVA_HOME
وGRADLE_LOCAL_JAVA_HOME
- إدخالات جدول JDK بتنسيق
vendor-version
مثلjbr-17
التي يتم تخزينها انتقِل إلى ملفات إعداد Android - تنزيل ملف JDK
- إضافة ملف JDK محدد
- ملفات JDK التي تم اكتشافها محليًا من تثبيت JDK التلقائي لنظام التشغيل الدليل
تم حفظ الخيار المحدَّد في الخيار "gradleJvm
" في
الخاص بالمشروع .idea/gradle.xml
، ويتم استخدام دقة مسار JDK لتشغيل
Gradle عند البدء من خلال "استوديو Android".
تفعِّل وحدات الماكرو اختيار مسار JDK للمشروع الديناميكي:
JAVA_HOME
: يستخدم متغير البيئة الذي يحمل الاسم نفسهGRADLE_LOCAL_JAVA_HOME
: يستخدِم السمةjava.home
في ملف.gradle/config.properties
الذي يتم ضبطه تلقائيًا على "وقت تشغيل JetBrains".
يتم استخدام JDK المحدّد لتشغيل إصدار Gradle وحل JDK API.
المراجع عند تعديل النصوص البرمجية للإصدار ورمز المصدر لاحظ أن
سيؤدي تحديد compileSdk
إلى تقييد رموز Java التي سيتم
متاحة عند تعديل رمز المصدر وإنشائه.
احرص على اختيار إصدار JDK أعلى من أو يساوي JDK. والإصدارات المستخدمة بواسطة المكونات الإضافية التي تستخدمها في إصدار Gradle الخاص بك. لتحديد بالحد الأدنى المطلوب من إصدار JDK للمكوّن الإضافي لنظام Gradle المتوافق مع Android (AGP)، فاطلع على جدول التوافق في ملاحظات الإصدار.
على سبيل المثال، يتطلب الإصدار 8.x من المكوّن الإضافي لنظام Gradle المتوافق مع Android تثبيت JDK 17. إذا حاولت تشغيل إصدار Gradle الذي يستخدمه مع إصدار سابق من JDK، فستبلغ عن رسالة مثل:
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 التي يمكنني استخدامها في رمز مصدر Java أو Kotlin؟
يمكن لأحد تطبيقات Android استخدام بعض واجهات برمجة التطبيقات المحددة في JDK، لكن ليس جميعها
منها. تُحدِّد حزمة تطوير البرامج (SDK) لنظام التشغيل Android عمليات تنفيذ العديد من دوال مكتبة Java.
كجزء من واجهات برمجة التطبيقات المتاحة به. تحدّد السمة compileSdk
نوع
إصدار حزمة تطوير البرامج (SDK) لنظام التشغيل Android المُستخدَم عند تجميع رمز المصدر بلغة Kotlin أو Java.
Kotlin
android {
...
compileSdk = 33
}
Groovy
android {
...
compileSdk 33
}
يدعم كل إصدار من Android إصدارًا محددًا من JDK ومجموعة فرعية من
لواجهات برمجة تطبيقات Java المتاحة. إذا كنت تستخدم واجهة برمجة تطبيقات Java متاحة في
compileSdk
غير متاح في القيمة المحدّدة
minSdk
، قد يكون بإمكانك استخدام واجهة برمجة التطبيقات
في الإصدار السابق من Android من خلال عملية تُعرف باسم
إزالة المحتوى المكتوب
راجِع واجهات برمجة تطبيقات Java 11 والإصدارات الأحدث المتاحة من خلال إزالة التصنيف للاطّلاع على الميزات المتوافقة
واجهات برمجة التطبيقات.
استخدِم هذا الجدول لتحديد إصدار Java المتوافق مع كل واجهة برمجة تطبيقات Android، ومكان العثور على تفاصيل حول توفُّر واجهات برمجة تطبيقات Java.
Android | Java | الميزات المتاحة في واجهة برمجة التطبيقات واللغات |
---|---|---|
14 (واجهة برمجة التطبيقات 34) | 17 | المكتبات الأساسية |
13 (واجهة برمجة التطبيقات 33) | 11 | المكتبات الأساسية |
12 (واجهة برمجة التطبيقات 32) | 11 | Java API |
11 والإصدارات الأدنى | إصدارات Android |
أي JDK يجمع رمز مصدر Java؟
تحتوي سلسلة أدوات Java على JDK على المحول البرمجي لـ Java، والذي يُستخدم لتجميع أي Java رمز المصدر. يُشغِّل JDK أيضًا اختبارات javadoc والوحدة أثناء عملية الإنشاء.
يتم ضبط سلسلة الأدوات تلقائيًا على JDK المستخدَم لتشغيل Gradle. إذا كنت تستخدم القيمة التلقائية والعمل على أجهزة مختلفة (على سبيل المثال، جهازك المحلي خادم تكامل متواصل منفصل)، ونتائج إصدارك يمكن أن يختلف في حال استخدام إصدارات JDK مختلفة.
ولإنشاء إصدار أكثر اتساقًا، يمكنك تحديد إصدار سلسلة أدوات Java. تحديد ذلك:
- تحديد موقع JDK متوافق على النظام الذي يُشغِّل الإصدار
- في حال عدم توفُّر نظام JDK متوافق (وتم تحديد برنامج حل سلسلة أدوات)، يتم تنزيل ملف واحد.
- تعرض واجهات برمجة تطبيقات Java لسلسلة الأدوات لتنفيذ الطلبات من رمز المصدر.
- لتجميع مصدر Java باستخدام إصدار لغة Java.
- يتم توفير القيم التلقائية لـ
sourceCompatibility
وtargetCompatibility
نقترح عليك أن تحدِّد دائمًا سلسلة أدوات Java، وأن تتأكّد من تثبيت JDK المحدد أو إضافة أداة حل سلسلة الأدوات على التصميم.
يمكنك تحديد سلسلة الأدوات سواء كان رمز المصدر مكتوبًا بلغة Java،
لغة Kotlin أو كليهما. حدد سلسلة الأدوات في المستوى العلوي من الوحدة
ملف build.gradle(.kts)
.
حدد إصدار سلسلة أدوات Java على النحو التالي:
Kotlin
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
Groovy
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
ويمكن إجراء ذلك إذا كان المصدر هو Kotlin أو Java أو مزيجًا من الاثنين معًا.
يمكن أن يكون إصدار JDK لسلسلة الأدوات هو نفسه إصدار JDK المستخدم لتشغيل Gradle، ولكن ضع في اعتبارك أنها تخدم أغراضًا مختلفة.
ما هي ميزات مصدر لغة Java التي يمكنني استخدامها في رمز مصدر Java؟
تحدّد السمة sourceCompatibility
ميزات لغة Java.
أثناء تجميع مصدر Java.
ولا يؤثر ذلك في مصدر لغة Kotlin.
إذا لم يتم تحديده، سيتم ضبطه تلقائيًا على سلسلة أدوات Java أو
ويُستخدم JDK لتشغيل Gradle. ننصحك بأن تحدّد دائمًا
سلسلة أدوات (مفضلة) أو sourceCompatibility
.
حدِّد sourceCompatibility
في ملف build.gradle(.kts)
للوحدة.
Kotlin
android {
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
}
}
Groovy
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
}
}
ما هي ميزات Java الثنائية التي يمكن استخدامها عند تجميع مصدر Kotlin أو Java؟
يؤدي تحديد targetCompatibility
وjvmTarget
إلى تحديد Java
إصدار بتنسيق الفئة يُستخدم عند إنشاء رمز بايت لـ Java وKotlin المجمّعين
المصدر على التوالي.
كانت بعض ميزات Kotlin موجودة قبل إضافة ميزات Java المكافئة.
كان على المبرمجين الأوائل لـ Kotlin إنشاء طريقتهم الخاصة لتمثيل هؤلاء الأشخاص
الجديدة. تمت إضافة بعض هذه الميزات لاحقًا إلى Java.
ومع jvmTarget
مستوى لاحق، قد يستخدم المحول البرمجي لـ Kotlin بشكل مباشر
ميزة Java، مما قد يؤدي إلى أداء أفضل.
يتم ضبط targetCompatibility
تلقائيًا على نفس القيمة مثل
sourceCompatibility
,
ولكن في حال تحديدها، يجب أن تكون أكبر من أو تساوي sourceCompatibility
.
يتم ضبط jvmTarget
تلقائيًا على إصدار toolchain.
تتوافق إصدارات Android المختلفة مع إصدارات مختلفة من Java. يمكنك
يمكنك الاستفادة من ميزات Java الإضافية من خلال زيادة
targetCompatibility
وjvmTarget
، ولكن هذا قد يجبرك أيضًا على
زيادة
الحد الأدنى لإصدار حزمة تطوير البرامج (SDK) لنظام التشغيل Android
توفّر الميزة.
Kotlin
android {
compileOptions {
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
}
Groovy
android {
compileOptions {
targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget '17'
}
}