يجمع نظام إصدار Android موارد التطبيقات ورمز المصدر والحِزم. إلى حِزم APK أو مجموعات حزمات تطبيق Android التي يمكنك اختبارها ونشرها وتوقيعها وتوزيعها.
يستخدم "استوديو Android" Gradle، وهو مجموعة أدوات إنشاء متقدّمة، لبرمجة التطبيقات. عملية التصميم وإدارتها مع السماح لك بتحديد عناصر مرنة ومخصَّصة تكوينات التصميم. يمكن أن تحدِّد كل إعدادات تصميم مجموعة الرموز الخاصة بها. والموارد أثناء إعادة استخدام الأجزاء المشتركة في جميع إصدارات تطبيقك. يعمل المكوّن الإضافي لنظام Gradle المتوافق مع Android مع مجموعة أدوات التصميم لتوفير العمليات والإعدادات القابلة للتهيئة الخاصة بالإنشاء والاختبار تطبيقات Android
يعمل كل من Gradle والمكوّن الإضافي لنظام Gradle المتوافق مع Android بشكل مستقل عن "استوديو Android". هذا النمط يعني أنّه يمكنك إنشاء تطبيقات Android من داخل "استوديو Android" سطر الأوامر على جهازك أو على الأجهزة حيث لا يمكن استخدام "استوديو Android" مثل خوادم التكامل المستمر.
إذا كنت لا تستخدم يمكنك التعرّف على كيفية إنشاء تطبيقك وتشغيله من "استوديو Android" سطر الأوامر. تكون نتيجة الإصدار هي نفسها سواء كنت فإن إنشاء مشروع من سطر الأوامر أو على جهاز بعيد أو باستخدام "استوديو Android".
ملاحظة: بسبب تشغيل المكوّن الإضافي لنظام Gradle ونظام Gradle المتوافق مع Android، بشكل مستقل عن "استوديو Android"، ستحتاج إلى تحديث أدوات الإنشاء على حدة. اقرأ ملاحظات الإصدار لمعرفة كيفية تحديث Gradle والمكوّن الإضافي لنظام Gradle المتوافق مع Android
تتيح لك مرونة نظام إصدار Android إنشاء تصميم مخصص إنشاء عمليات إعداد بدون تعديل ملفات المصدر الأساسية لتطبيقك. هذا النمط في فهم آلية عمل نظام إصدار Android وكيفية يمكنها مساعدتك في تخصيص تهيئات تصميم متعددة وتنفيذها آليًا. إذا كنت لمعرفة المزيد من المعلومات عن نشر تطبيقك، يمكنك الاطّلاع على إنشاء تطبيقك وتشغيله. لبدء إنشاء مخصص وإنشاء التكوينات على الفور باستخدام "استوديو Android"، راجِع إعداد الإصدار المختلفة.
عملية التصميم
تتضمن عملية التصميم العديد من الأدوات والعمليات التي تحول مشروعك في حزمة تطبيق Android (APK) أو مجموعة حزمات تطبيق Android (AAB).
يُجري المكوّن الإضافي لنظام Gradle المتوافق مع Android الكثير من عملية التصميم نيابةً عنك، ولكن يمكن لفهم جوانب معينة من عملية التصميم حتى تتمكن من تعديل من أجل تلبية متطلباتك.
قد يكون للمشروعات المختلفة أهداف بناء مختلفة. على سبيل المثال، يختلف إنشاء مكتبة تابعة لجهة خارجية تنتج أرشيف Android (AAR) أو أرشيف Java (JAR) المكتبات. ومع ذلك، فإنّ التطبيق هو النوع الأكثر شيوعًا من المشاريع، وتصميم التطبيق إصدار حزمة APK أو AAB لتطبيقك يمكنك نشره أو اختبارها أو إصدارها للمستخدمين الخارجيين.
تركز هذه الصفحة على تطوير التطبيقات، ولكن العديد من خطوات ومفاهيم الإنشاء شائعة في معظم أنواع الإصدارات.
مسرد مصطلحات إصدار Android
يساعدك كل من Gradle والمكوّن الإضافي لنظام Gradle المتوافق مع Android في ضبط الجوانب التالية من التصميم:
- أنواع الإصدارات
-
تحدد أنواع الإنشاء خصائص معينة تستخدمها Gradle عند إنشاء حزمة التطبيق. عادةً ما يتم ضبط أنواع الإصدارات لمختلف من مراحل دورة حياة التطوير.
على سبيل المثال، نوع إصدار تصحيح الأخطاء لتمكين خيارات تصحيح الأخطاء وتوقيع التطبيق باستخدام مفتاح تصحيح الأخطاء، في حين أن نوع إصدار الإصدار قد يتقلّص أو يؤدي إلى تشويش أو توقيع تطبيقك على إصدار معيّن. للتوزيع.
يجب تحديد نوع تصميم واحد على الأقل إنشاء تطبيقك. ينشئ "استوديو Android" أنواع إصدارات تصحيح الأخطاء والإصدارات. تلقائيًا. لبدء تخصيص إعدادات التغليف لتطبيقك، يمكنك الاطّلاع على كيفية لإعداد الإصدار الأنواع.
- نكهات المنتجات
- تمثّل نكهات المنتجات إصدارات مختلفة من تطبيقك يمكنك استخدامها للمستخدمين، مثل الإصدارات المجانية والمدفوعة. يمكنك تخصيص نكهات المنتج لاستخدام رموز وموارد مختلفة مع مشاركة وإعادة استخدام الأجزاء المشتركة في جميع إصدارات التطبيق. المنتج النكهات اختيارية، ويجب إنشاؤها يدويًا. لبدء صناعة المحتوى وإصدارات مختلفة من التطبيق، تعرّف على كيفية ضبط ونكهات المنتجات.
- إنشاء خيارات المنتج
- صيغة الإصدار هي عبارة عن منتج متداخل لنوع التصميم ونكهة المنتج هو الضبط الذي تستخدمه أداة Gradle لإنشاء تطبيقك. باستخدام متغيرات التصميم، يمكنك إنشاء نسخة تصحيح الأخطاء لنكهات منتجك أثناء التطوير وتوقيع الإصدارات النهائية لنكهات منتجاتك للتوزيع. على الرغم من عدم ضبط صيغ الإصدار مباشرةً، يمكنك ضبط وإنشاء أنواع ونكهات المنتجات التي تشكلها. إنشاء إصدار إضافي أو نكهات المنتج إلى إنشاء متغيرات تصميم إضافية. للتعلّم كيفية إنشاء صيغ الإصدار وإدارتها، راجِع المقالة ضبط صيغ الإصدار. نظرة عامة.
- إدخالات البيان
- يمكنك تحديد قيم لبعض خصائص ملف البيان في الإصدار. إعدادات الصيغة. تلغي قيم الإصدار هذه القيم الحالية في ملف البيان. وهذا الإجراء مفيد إذا كنت تريد إنشاء صيغ متعدّدة. لتطبيقك باسم تطبيق مختلف أو حد أدنى لإصدار حزمة تطوير البرامج (SDK) أو إصدار حزمة SDK المستهدف. في حال وجود عدة بيانات، يتم عرض أداة الدمج يدمج إعدادات البيان.
- التبعيات
- يدير نظام التصميم تبعيات المشروع من نظام الملفات المحلي ومن المستودعات البعيدة. هذا يعني أنك لست مضطرًا لإجراء والبحث عن الحزم الثنائية لتبعياتك وتنزيلها ونسخها إلى دليل المشروع. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة إضافة إصدار. والتبعيات لديك.
- التوقيع
- يتيح لك نظام التصميم تحديد إعدادات التوقيع في الإصدار. من التكوين، ويمكنه توقيع تطبيقك تلقائيًا أثناء الإصدار الدفع. يوقّع نظام الإصدار على إصدار تصحيح الأخطاء باستخدام مفتاح تلقائي. استخدام بيانات اعتماد معروفة لتجنُّب طلب كلمة مرور عند الإصدار الوقت. لا يوقّع نظام التصميم على الإصدار ما لم تحديد إعدادات التوقيع لهذا الإصدار بشكل صريح. إذا لم تحدد لديك مفتاح إصدار، يمكنك إنشاء مفتاح كما هو موضَّح في قسم توقيع تطبيقك. نُسخ الإصدارات الموقَّعة مطلوبة لتوزيع التطبيقات من خلال معظم متاجر التطبيقات.
- تقليص حجم الرموز والموارد
- يتيح لك نظام التصميم تحديد ملف قواعد ProGuard مختلف لكل صيغة من صيغ الإصدار. عند إنشاء تطبيقك، يطبِّق نظام الإصدار مجموعة قواعد مناسبة لتقليص التعليمات البرمجية والموارد باستخدام أدوات التقليص المضمنة، مثل R8. يمكن أن يساعد تقليص حجم الرمز البرمجي والموارد في تقليل حجم حِزمة APK أو AAB.
- إتاحة عدة حِزم APK
- يتيح لك نظام التصميم إنشاء حِزم APK مختلفة يحتوي كل منها فقط على التعليمات البرمجية والموارد المطلوبة للحصول على كثافة شاشة معيّنة أو واجهة تطبيق ثنائية (ABI). لمزيد من المعلومات، يُرجى مراجعة إنشاء حِزم APK متعددة في المقابل، إنّ إطلاق تنسيق AAB واحد النهج الموصى به، حيث إنها تتيح التقسيم حسب اللغة بالإضافة إلى كثافة الشاشة وواجهة التطبيق الثنائية (ABI)، مع تجنُّب الحاجة إلى تحميل المحتوى العديد من العناصر على Google Play. جميع التطبيقات الجديدة المرسَلة بعد آب (أغسطس) 2021 لاستخدام AAB.
إصدارات Java في إصدارات Android
سواء كان رمز المصدر مكتوبًا بلغة Java أو Kotlin أو كليهما، هناك العديد من الأماكن التي يجب عليك فيها اختيار لغة JDK أو Java لإصدارك المناسب. الاطّلاع على إصدارات Java في إصدارات Android لمزيد من التفاصيل.
إنشاء ملفات الإعداد
يتطلب إنشاء تهيئات إنشاء مخصصة إجراء تغييرات على أحد أو المزيد من ملفات تهيئة الإصدار. هذه تستخدم ملفات النص العادي لغة خاصة بالمجال (DSL) لوصف معالجة منطق الإنشاء باستخدام نص Kotlin، وهي شكل من أشكال لغة Kotlin. يمكنك أيضًا استخدام Groovy، وهو لجهاز Java الافتراضي (JVM) لتهيئة إصداراتك.
لا تحتاج إلى معرفة نص Kotlin أو Groovy لبدء تهيئة نظرًا لأن المكوّن الإضافي لنظام Gradle المتوافق مع Android يقدم معظم عناصر DSL التي تحتاجها. لمعرفة المزيد من المعلومات عن مكوّن DSL الإضافي لنظام Gradle المتوافق مع Android، يُرجى الاطّلاع على المستندات المرجعية لـ DSL. يعتمد نص Kotlin أيضًا على الأساسية Gradle Kotlin DSL.
عند بدء مشروع جديد، ينشئ "استوديو Android" تلقائيًا بعضًا من هذه الملفات لك وتعبئتها استنادًا إلى إعدادات افتراضية معقولة. المشروع بنية الملف لها التخطيط التالي:
└── 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
هناك عدد قليل من ملفات تهيئة إصدار Gradle الذي تعد جزءًا من لهيكل المشروع القياسي لتطبيق Android. قبل البدء تكوين تصميمك، فمن المهم فهم نطاق والغرض لكل ملف من هذه الملفات وعناصر DSL الأساسية التي تحددها.
ملف Gradle Wrapper
يُعد برنامج تضمين Gradle (gradlew
) تطبيقًا صغيرًا يتم تضمينه مع
التعليمات البرمجية المصدر التي تنزِّل أداة Gradle نفسها وتشغِّلها.
ويؤدي ذلك إلى إنشاء عمليات تنفيذ أكثر اتساقًا. ينزّل المطوّرون
تطبيق المصدر وتشغيل gradlew
. يؤدي هذا إلى تنزيل ملف Gradle المطلوب
الإصدار، وتُطلق Gradle لإنشاء تطبيقك.
الملف gradle/wrapper/gradle-wrapper.properties
يحتوي على السمة distributionUrl
التي تصف أي إصدار
يتم استخدام Gradle لتشغيل التصميم الخاص بك.
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
ملف settings.gradle.kts
(بالنسبة إلى Kotlin DSL) أو
يوجد ملف settings.gradle
(لـ Groovy DSL) في الجذر
دليل المشروع. يحدد ملف الإعدادات هذا المستودع على مستوى المشروع
ويُعلِم Gradle بالوحدات التي ينبغي تضمينها عند إنشاء
التطبيق. تحتاج المشاريع متعددة الوحدات إلى تحديد كل وحدة ينبغي أن تدخل في
والبنية النهائية.
في معظم المشاريع، يظهر الملف تلقائيًا على النحو التالي:
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")
Groovy
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'
ملف الإصدار ذي المستوى الأعلى
ملف build.gradle.kts
ذي المستوى الأعلى (لـ Kotlin DSL) أو
يوجد ملف build.gradle
(لـ Groovy DSL) في الجذر
دليل المشروع. تحدد عادةً الإصدارات الشائعة من المكوّنات الإضافية المستخدمة
حسب الوحدات في مشروعك.
يصف نموذج التعليمة البرمجية التالي الإعدادات الافتراضية وعناصر DSL في نص إنشاء المستوى الأعلى بعد إنشاء مشروع جديد:
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.6.0" apply false id("com.android.library") version "8.6.0" apply false id("org.jetbrains.kotlin.android") version "1.9.23" apply false }
Groovy
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.6.0' apply false id 'com.android.library' version '8.6.0' apply false id 'org.jetbrains.kotlin.android' version '1.9.23' apply false }
ملف الإصدار على مستوى الوحدة
تمثّل هذه السمة build.gradle.kts
على مستوى الوحدة (لخدمة Kotlin DSL) أو
يتوفّر ملف build.gradle
(لموقع Groovy DSL) في كل
دليل project/module/
. إنه يتيح لك
تهيئة إعدادات الإصدار للوحدة النمطية المحددة التي توجد بها. جارٍ الإعداد
تتيح لك إعدادات التصميم هذه توفير خيارات مخصصة، مثل
أنواع إنشاء ونكهات منتجات إضافية، وإلغاء الإعدادات في
بيان التطبيق main/
أو نص برمجي للإصدار ذي المستوى الأعلى.
إعدادات حزمة تطوير البرامج (SDK) لنظام التشغيل Android
يتضمن ملف التصميم على مستوى الوحدة الخاصة بتطبيقك إعدادات تشير إلى يتم استخدام إصدارات حزمة تطوير البرامج (SDK) لنظام التشغيل Android عند التجميع واختيار سلوكيات النظام الأساسي مع تحديد الحد الأدنى للإصدار الذي يعمل عليه التطبيق.
-
compileSdk
-
تحدِّد
compileSdk
واجهات برمجة تطبيقات Android وJava المتاحة عند تجميع رمز المصدر لاستخدام أحدث إصدار من نظام التشغيل Android الأخرى، تستخدم أحدث حزمة تطوير برامج (SDK) لنظام التشغيل Android عند التجميع.قد لا تتوفّر بعض واجهات برمجة تطبيقات نظام Android الأساسي. في مستويات واجهة برمجة التطبيقات القديمة. يمكنك استخدام الميزات الأحدث بشكل مشروط أو استخدامها مكتبات التوافق مع AndroidX لاستخدام ميزات أحدث ذات إصدارات أقل مستويات واجهة برمجة تطبيقات Android.
توفر كل حزمة SDK لنظام التشغيل Android مجموعة فرعية من واجهات برمجة تطبيقات Java لاستخدامها في تطبيقك. الجدول في ما هي واجهات برمجة تطبيقات Java التي يمكنني استخدامها في رمز المصدر Java أو Kotlin يعرض مستوى واجهة برمجة تطبيقات Java المتاح استنادًا إلى إصدار حزمة تطوير البرامج (SDK) لنظام التشغيل Android. تتوافق واجهات برمجة تطبيقات Java الجديدة مع الإصدارات السابقة من Android من خلال إزالة المحتوى، الذي يجب تمكين في الإصدار الخاص بك.
يعرض "استوديو Android" تحذيرات في حال تعارض
compileSdk
بالإصدار الحالي من Android Studio أو AGP أو مكتبة مشروعك متطلبات التبعية. -
minSdk
-
يحدّد
minSdk
أدنى إصدار من نظام Android أنشأته. التي تريد أن يدعمها تطبيقك. يؤدي ضبطminSdk
إلى تقييد ما يلي: الأجهزة تثبيت تطبيقك.قد يتطلب التوافق مع إصدارات أقل من Android المزيد من عمليات التحقّق المشروطة في الرمز البرمجي أو استخدام المزيد من مكتبات التوافق مع AndroidX. عليك موازنة تكلفة الصيانة لدعم الإصدارات الأقل النسبة المئوية للمستخدمين الذين ما زالوا يستخدمون هذه الإصدارات الأقل. يمكنك الاطّلاع على الرسم البياني للإصدار في معالج المشروع الجديد في "استوديو Android". للنسب المئوية لاستخدام الإصدار الحالي.
عند تعديل الرمز في "استوديو Android" أو إجراء عمليات تحقّق أثناء التصميم، سيحذر lint من واجهات برمجة التطبيقات التي تستخدمها وغير المتاحة في
minSdk
. يجب عليك إصلاح هذه المشاكل عن طريق جعل الميزات الأحدث مشروطة أو باستخدامAppcompat
للتوافق مع الأنظمة القديمة. -
targetSdk
-
يخدم
targetSdk
غرضين:- يحدد سلوك وقت تشغيل التطبيق.
- وهو يشير إلى إصدار Android الذي اختبرته.
إذا كنت تستخدم جهازًا يعمل بإصدار Android أحدث من
targetSdk
، سيشغّل Android تطبيقك في وضع التوافق. يعمل بشكل مشابه للإصدار الأدنى المشار إليه فيtargetSdk
على سبيل المثال، عندما قدّمت واجهة برمجة التطبيقات 23 بيئة التشغيل نموذج الأذونات هذا، فلم تكن جميع التطبيقات جاهزة لاعتماده فورًا. عند ضبط القيمةtargetSdk
على 22، يمكن تشغيل هذه التطبيقات على واجهة برمجة التطبيقات 23 جهازًا بدون استخدام أذونات وقت التشغيل، ويمكنها استخدام ميزات مضمّنة في أحدث إصدار منcompileSdk
. Google Play تفرض سياسة التوزيع سياسات إضافية على مستوى واجهة برمجة التطبيقات المستهدف.يجب أن تكون قيمة
targetSdk
أقل من أو تساوي إلى النتائج المتعلقة بـcompileSdk
.
ملاحظة: قيمتا compileSdk
وtargetSdk
ولست بحاجة إلى أن تكون متطابقة. ضع المبادئ الأساسية التالية في الاعتبار:
- يتيح لك
compileSdk
إمكانية الوصول إلى واجهات برمجة تطبيقات جديدة. - يحدّد
targetSdk
سلوك بيئة تشغيل تطبيقك. - يجب أن تكون قيمة
targetSdk
أقل من أو تساويcompileSdk
نموذج نص برمجي لإنشاء وحدة تطبيق
يوضح هذا النص البرمجي الخاص بتصميم وحدة تطبيق Android بعض لعناصر وإعدادات DSL الأساسية:
Kotlin
/** * The first section in the build configuration applies the Android Gradle plugin * to this build and makes the android block available to specify * Android-specific build options. */ plugins { id("com.android.application") } /** * Locate (and possibly download) a JDK used to build your kotlin * source code. This also acts as a default for sourceCompatibility, * targetCompatibility and jvmTarget. Note that this does not affect which JDK * is used to run the Gradle build itself, and does not need to take into * account the JDK version required by Gradle plugins (such as the * Android Gradle Plugin) */ kotlin { jvmToolchain(11) } /** * The android block is where you configure all your Android-specific * build options. */ android { /** * The app's namespace. Used primarily to access app resources. */ namespace = "com.example.myapp" /** * compileSdk specifies the Android API level Gradle should use to * compile your app. This means your app can use the API features included in * this API level and lower. */ compileSdk = 33 /** * The defaultConfig block encapsulates default settings and entries for all * build variants and can override some attributes in main/AndroidManifest.xml * dynamically from the build system. You can configure product flavors to override * these values for different versions of your app. */ defaultConfig { // Uniquely identifies the package for publishing. applicationId = "com.example.myapp" // Defines the minimum API level required to run the app. minSdk = 21 // Specifies the API level used to test the app. targetSdk = 33 // Defines the version number of your app. versionCode = 1 // Defines a user-friendly version name for your app. versionName = "1.0" } /** * The buildTypes block is where you can configure multiple build types. * By default, the build system defines two build types: debug and release. The * debug build type is not explicitly shown in the default build configuration, * but it includes debugging tools and is signed with the debug key. The release * build type applies ProGuard settings and is not signed by default. */ buildTypes { /** * By default, Android Studio configures the release build type to enable code * shrinking, using minifyEnabled, and specifies the default ProGuard rules file. */ getByName("release") { isMinifyEnabled = true // Enables code shrinking for the release build type. proguardFiles( getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" ) } } /** * The productFlavors block is where you can configure multiple product flavors. * This lets you create different versions of your app that can * override the defaultConfig block with their own settings. Product flavors * are optional, and the build system does not create them by default. * * This example creates a free and paid product flavor. Each product flavor * then specifies its own application ID, so that they can exist on the Google * Play Store, or an Android device, simultaneously. * * If you declare product flavors, you must also declare flavor dimensions * and assign each flavor to a flavor dimension. */ flavorDimensions += "tier" productFlavors { create("free") { dimension = "tier" applicationId = "com.example.myapp.free" } create("paid") { dimension = "tier" applicationId = "com.example.myapp.paid" } } /** * To override source and target compatibility (if different from the * toolchain JDK version), add the following. All of these * default to the same value as kotlin.jvmToolchain. If you're using the * same version for these values and kotlin.jvmToolchain, you can * remove these blocks. */ //compileOptions { // sourceCompatibility = JavaVersion.VERSION_11 // targetCompatibility = JavaVersion.VERSION_11 //} //kotlinOptions { // jvmTarget = "11" //} } /** * The dependencies block in the module-level build configuration file * specifies dependencies required to build only the module itself. * To learn more, go to Add build dependencies. */ dependencies { implementation(project(":lib")) implementation("androidx.appcompat:appcompat:1.7.0") implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar")))) }
Groovy
/** * The first line in the build configuration applies the Android Gradle plugin * to this build and makes the android block available to specify * Android-specific build options. */ plugins { id 'com.android.application' } /** * Locate (and possibly download) a JDK used to build your kotlin * source code. This also acts as a default for sourceCompatibility, * targetCompatibility and jvmTarget. Note that this does not affect which JDK * is used to run the Gradle build itself, and does not need to take into * account the JDK version required by Gradle plugins (such as the * Android Gradle Plugin) */ kotlin { jvmToolchain 11 } /** * The android block is where you configure all your Android-specific * build options. */ android { /** * The app's namespace. Used primarily to access app resources. */ namespace 'com.example.myapp' /** * compileSdk specifies the Android API level Gradle should use to * compile your app. This means your app can use the API features included in * this API level and lower. */ compileSdk 33 /** * The defaultConfig block encapsulates default settings and entries for all * build variants and can override some attributes in main/AndroidManifest.xml * dynamically from the build system. You can configure product flavors to override * these values for different versions of your app. */ defaultConfig { // Uniquely identifies the package for publishing. applicationId 'com.example.myapp' // Defines the minimum API level required to run the app. minSdk 21 // Specifies the API level used to test the app. targetSdk 33 // Defines the version number of your app. versionCode 1 // Defines a user-friendly version name for your app. versionName "1.0" } /** * The buildTypes block is where you can configure multiple build types. * By default, the build system defines two build types: debug and release. The * debug build type is not explicitly shown in the default build configuration, * but it includes debugging tools and is signed with the debug key. The release * build type applies ProGuard settings and is not signed by default. */ buildTypes { /** * By default, Android Studio configures the release build type to enable code * shrinking, using minifyEnabled, and specifies the default ProGuard rules file. */ release { minifyEnabled true // Enables code shrinking for the release build type. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } /** * The productFlavors block is where you can configure multiple product flavors. * This lets you create different versions of your app that can * override the defaultConfig block with their own settings. Product flavors * are optional, and the build system does not create them by default. * * This example creates a free and paid product flavor. Each product flavor * then specifies its own application ID, so that they can exist on the Google * Play Store, or an Android device, simultaneously. * * If you declare product flavors, you must also declare flavor dimensions * and assign each flavor to a flavor dimension. */ flavorDimensions "tier" productFlavors { free { dimension "tier" applicationId 'com.example.myapp.free' } paid { dimension "tier" applicationId 'com.example.myapp.paid' } } /** * To override source and target compatibility (if different from the * tool chain JDK version), add the following. All of these * default to the same value as kotlin.jvmToolchain. If you're using the * same version for these values and kotlin.jvmToolchain, you can * remove these blocks. */ //compileOptions { // sourceCompatibility JavaVersion.VERSION_11 // targetCompatibility JavaVersion.VERSION_11 //} //kotlinOptions { // jvmTarget = '11' //} } /** * The dependencies block in the module-level build configuration file * specifies dependencies required to build only the module itself. * To learn more, go to Add build dependencies. */ dependencies { implementation project(":lib") implementation 'androidx.appcompat:appcompat:1.7.0' implementation fileTree(dir: 'libs', include: ['*.jar']) }
ملفات خصائص Gradle
يشتمل Gradle أيضًا على ملفي خصائص، موجودان في مشروع الجذر الخاص بك. يمكنك استخدامه لتحديد إعدادات مجموعة أدوات إنشاء Gradle نفسها:
-
gradle.properties
- وهذا هو المكان الذي يمكنك فيه ضبط إعدادات Gradle على مستوى المشروع، مثل الحد الأقصى لحجم الذاكرة التي تم إنشاؤها في برنامج Gradle الخفي لمزيد من المعلومات، يُرجى الاطّلاع على تصميم البيئة.
-
local.properties
-
تضبط هذه السياسة خصائص البيئة المحلية لنظام الإصدار، بما في ذلك
التالي:
ndk.dir
- المسار إلى NDK. تم تصنيف هذا الموقع نهائيًا. يتم تثبيت أي إصدارات يتم تنزيلها من NDK في دليلndk
ضمن دليل حزمة تطوير البرامج (SDK) لنظام التشغيل Android.sdk.dir
: المسار إلى حزمة تطوير البرامج (SDK) لنظام التشغيل Androidcmake.dir
- المسار إلى CMake.ndk.symlinkdir
: في الإصدار 3.5 من "استوديو Android" والإصدارات الأحدث تنشئ رابطًا رمزيًا إلى NDK يمكن أن يكون أقصر من الرابط المثبت مسار NDK.
إعادة تخصيص NDK إلى مسار أقصر (Windows فقط)
في نظام التشغيل Windows، تنتهي الأدوات في مجلد NDK المثبّت، مثل ld.exe
،
والمسارات الطويلة. لا تدعم الأدوات المسارات الطويلة بشكل جيد.
لإنشاء مسار أقصر، يجب ضبط السمة في local.properties
.
ndk.symlinkdir
لطلب إنشاء رابط رمزي من المكوّن الإضافي لنظام Gradle المتوافق مع Android
NDK. ويمكن أن يكون مسار هذا الرابط الرمزي أقصر من مجلد NDK الحالي.
على سبيل المثال، ينتج عن ndk.symlinkdir = C:\
الرابط الرمزي التالي:
C:\ndk\19.0.5232133
مزامنة المشروع مع ملفات Gradle
عند إجراء تغييرات على ملفات تهيئة الإصدار في مشروعك، يتطلب "استوديو Android" مزامنة ملفات مشروعك حتى يمكن استيراد تغييرات تهيئة تصميمك وإجراء بعض عمليات التحقق للتأكد من أن إلى حدوث أخطاء في الإصدار.
لمزامنة ملفات مشروعك، انقر على المزامنة الآن في
شريط إشعارات يظهر عند إجراء تغيير، كما هو موضح في
على الشكل 1، أو انقر على مزامنة المشروع
من شريط القوائم. إذا وجد "استوديو Android" أي أخطاء في
التصميم — على سبيل المثال، يستخدم رمز المصدر ميزات واجهة برمجة التطبيقات التي
متوفّرة على مستوى واجهة برمجة تطبيقات أعلى من compileSdkVersion
— تصف نافذة الرسائل المشكلة.
مجموعات المصادر
يجمع "استوديو Android" منطقيًا رمز المصدر والموارد لكل وحدة
إلى مجموعات مصادر. عند إنشاء وحدة جديدة، يمكن لبرنامج "استوديو Android"
تنشئ مجموعة مصدر main/
داخل الوحدة. الوظيفة
تتضمّن مجموعة المصادر main/
الرمز والموارد التي تستخدمها جميع
متغيرات التصميم.
تكون أدلة مجموعة المصادر الإضافية اختيارية، ويتوافق Android
لا تنشئها "استوديو YouTube" تلقائيًا نيابةً عنك عند ضبط إصدار جديد.
مختلفة. في المقابل، قد يكون إنشاء مجموعات مصادر، مثل main/
، مفيدًا
تنظيم الملفات والموارد التي ينبغي أن تستخدمها Gradle فقط عند إنشاء أنواع
من إصدارات تطبيقك:
-
src/main/
- تتضمّن مجموعة المصادر هذه رمزًا وموارد مشتركة بين جميع نُسخ الإصدارات.
-
src/buildType/
- يمكنك إنشاء مجموعة المصادر هذه لتضمين رمز برمجي وموارد لنطاق محدّد فقط. ونوع التصميم.
-
src/productFlavor/
-
يمكنك إنشاء مجموعة المصادر هذه لتضمين رمز برمجي وموارد لنطاق محدّد فقط.
ونكهة المنتج.
ملاحظة: في حال إعداد إصدارك للدمج بين عدة خيارات نكهات المنتجات، يمكنك إنشاء أدلة مجموعة مصادر لكل منها مجموعة من نكهات المنتجات بين أبعاد النكهة:
src/productFlavor1ProductFlavor2/
-
src/productFlavorBuildType/
- يمكنك إنشاء مجموعة المصادر هذه لتضمين رمز برمجي وموارد لنطاق محدّد فقط. نسخة الإصدار.
على سبيل المثال، لإنشاء خطأ "fullDebug" من تطبيقك، يدمج نظام التصميم الرمز البرمجي والإعدادات والموارد من مجموعات المصادر التالية:
-
src/fullDebug/
(مجموعة مصادر صيغة الإصدار) -
src/debug/
(مجموعة مصادر نوع الإصدار) -
src/full/
(مجموعة مصادر نكهة المنتج) -
src/main/
(مجموعة المصادر الرئيسية)
ملاحظة: عند إنشاء ملف أو دليل جديد في Android استوديو، استخدم زر ملف > جديد خيارات القائمة للإنشاء على مجموعة مصادر محددة. وتستند مجموعات المصادر التي يمكنك الاختيار من بينها إلى في تكوينات تصميمك، وسينشئ "استوديو Android" تلقائيًا الأدلة المطلوبة إذا لم تكن موجودة بالفعل.
وإذا كانت مجموعات المصادر المختلفة تحتوي على إصدارات مختلفة من الملف نفسه، ستلاحظ ترتيب الأولوية التالي عند تحديد الملف الذي تريد استخدامه. المصدر على اليسار تتجاوز الملفات وإعدادات مجموعات المصدر على اليمين:
إصدار المتغير > نوع الإصدار > نكهة المنتج > مجموعة المصادر الرئيسية > تبعيات المكتبة
يتيح ذلك لنظام Gradle استخدام ملفات خاصة بمتغير الإصدار الذي التي تحاول إنشائها أثناء إعادة استخدام الأنشطة ومنطق التطبيق الموارد الشائعة مع الإصدارات الأخرى من التطبيق.
عند دمج عناصر متعددة ، تستخدم Gradle نفس ترتيب الأولوية بحيث يمكن لكل صيغة إنشاء تحدد مكونات أو أذونات مختلفة في البيان النهائي. للتعلّم للمزيد من المعلومات حول إنشاء مجموعات مصادر مخصَّصة، يُرجى الاطّلاع على مقالة إنشاء مجموعات مصادر.
كتالوجات الإصدارات
إذا كان الإصدار الخاص بك يحتوي على وحدات متعددة بتبعيات مشتركة، أو العديد من المشروعات المستقلة ذات التبعيات المشتركة، فإننا نوصي يتم استخدام كتالوج الإصدار أو فاتورة المواد (BOM) إلى تحديد الإصدارات الشائعة.
أنظمة تصميم أخرى
إنّ إنشاء تطبيقات Android باستخدام Bazel هو ولكن ليس مدعومًا رسميًا. لا يتم تحديث تطبيق Android Studio بشكل رسمي لدعم مشروعات Bazel.
للتعرّف بشكل أفضل على القيود الحالية للإنشاء باستخدام Bazel، يُرجى الاطّلاع على المشاكل المعروفة.