ضبط الإصدار

يجمع نظام إصدار 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.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
}

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.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
}