الإصدار 2.2.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" (سبتمبر 2016)

التبعيات:
الحد الأدنى للإصدار الإصدار التلقائي الملاحظات
Gradle 2.14.1 2.14.1 لمزيد من المعلومات، اطّلِع على تحديث Gradle.
أدوات إنشاء حزمة تطوير البرامج (SDK) 23.0.2 23.0.2 ثبِّت أو اضبط أدوات إنشاء حزمة تطوير البرامج (SDK).
جديد:
  • يستخدم الإصدار Gradle 2.14.1 الذي يتضمّن تحسينات في الأداء وميزات جديدة، كما أنّه يعالج ثغرة أمنية تسمح بتصعيد الامتيازات المحلية عند استخدام Gradle daemon. لمزيد من التفاصيل، راجِع ملاحظات إصدار Gradle.
  • باستخدام externalNativeBuild {} DSL، يتيح لك Gradle الآن الربط بالمصادر الأصلية وتجميع المكتبات الأصلية باستخدام CMake أو ndk-build. بعد إنشاء المكتبات المجمّعة من رموز برمجية أصلية، يجمعها Gradle في حزمة APK. لمزيد من المعلومات حول استخدام CMake وndk-build مع Gradle، يُرجى قراءة مقالة إضافة رمز C وC++ إلى مشروعك.
  • عند تشغيل إصدار من سطر الأوامر، يحاول Gradle الآن تنزيل أي مكوّنات أو تحديثات مفقودة في حزمة SDK يعتمد عليها مشروعك تلقائيًا. لمزيد من المعلومات، يُرجى قراءة مقالة التنزيل التلقائي للحِزم المفقودة باستخدام Gradle.
  • تتيح ميزة التخزين المؤقت التجريبية الجديدة في Gradle تسريع أوقات الإنشاء من خلال تنفيذ عملية dex مسبقًا وتخزين إصدارات المكتبات التي تم تنفيذ عملية dex لها مسبقًا وإعادة استخدامها. لمزيد من المعلومات حول استخدام هذه الميزة التجريبية، يمكنك الاطّلاع على دليل ذاكرة التخزين المؤقت للبناء.
  • تحسين أداء عملية الإنشاء من خلال استخدام مسار جديد لتعبئة الحِزم التلقائية يتولّى عملية الضغط والتوقيع ومحاذاة zip في مهمة واحدة يمكنك العودة إلى استخدام أدوات التغليف القديمة من خلال إضافة android.useOldPackaging=true إلى ملف gradle.properties. أثناء استخدام أداة التغليف الجديدة، لا تتوفّر مهمة zipalignDebug. ومع ذلك، يمكنك إنشاء واحد بنفسك عن طريق استدعاء طريقة createZipAlignTask(String taskName, File inputFile, File outputFile).
  • يستخدم توقيع حِزمة APK الآن الإصدار 2 من مخطّط توقيع حزمة APK بالإضافة إلى توقيع JAR التقليدي. تقبل جميع منصات Android حِزم APK الناتجة. ويؤدي أي تعديل على حِزم APK هذه بعد التوقيع إلى إبطال توقيعات الإصدار 2 ويمنع تثبيتها على أي جهاز. لإيقاف هذه الميزة، أضِف ما يلي إلى ملف build.gradle على مستوى الوحدة:

    Groovy

    android {
      ...
      signingConfigs {
        config {
          ...
          v2SigningEnabled false
        }
      }
    }
          

    Kotlin

    android {
      ...
      signingConfigs {
        create("config") {
          ...
          v2SigningEnabled = false
        }
      }
    }
          
  • بالنسبة إلى إصدارات multidex، يمكنك الآن استخدام قواعد ProGuard لتحديد الفئات التي يجب أن يجمعها Gradle في ملف DEX الرئيسي الخاص بتطبيقك. بما أنّ نظام التشغيل Android يحمّل ملف DEX الرئيسي أولاً عند بدء تشغيل تطبيقك، يمكنك تحديد أولوية بعض الفئات عند بدء التشغيل من خلال تجميعها في ملف DEX الرئيسي. بعد إنشاء ملف إعداد ProGuard مخصّص لملف DEX الرئيسي، مرِّر مسار ملف الإعداد إلى Gradle باستخدام buildTypes.multiDexKeepProguard. يختلف استخدام لغة DSL هذه عن استخدام buildTypes.proguardFiles، الذي يوفّر قواعد ProGuard العامة لتطبيقك ولا يحدّد الفئات لملف DEX الرئيسي.
  • تضيف هذه السمة إمكانية استخدام العلامة android:extractNativeLibs، التي يمكن أن تقلّل حجم تطبيقك عند تثبيته على جهاز. عند ضبط هذا العلامة على false في عنصر <application> في بيان التطبيق، يجمّع Gradle إصدارات غير مضغوطة ومتوافقة من المكتبات المجمّعة من رموز برمجية أصلية مع حزمة APK. يمنع هذا الإعداد PackageManager من نسخ المكتبات المجمّعة من رموز برمجية أصلية من حِزمة APK إلى نظام ملفات الجهاز أثناء التثبيت، كما يوفّر ميزة إضافية تتمثّل في تصغير حجم التحديثات التفاضلية لتطبيقك.
  • يمكنك الآن تحديد versionNameSuffix و applicationIdSuffix لنكهات المنتجات. (المشكلة 59614)
التغييرات:
  • تعرض getDefaultProguardFile الآن ملفات ProGuard التلقائية التي يوفّرها المكوّن الإضافي لنظام Android في Gradle، ولم تعُد تستخدم الملفات المتوفّرة في حزمة تطوير البرامج (SDK) لنظام Android.
  • تحسين أداء وميزات برنامج Jack المجمّع:
    • يتوافق Jack الآن مع تغطية اختبار Jacoco عند ضبط testCoverageEnabled على true.
    • تحسين التوافق مع معالجات التعليقات التوضيحية تتم تلقائيًا إضافة معالِجات التعليقات التوضيحية في مسار الفئة، مثل أي تبعيات compile، إلى عملية الإنشاء. يمكنك أيضًا تحديد معالج تعليقات توضيحية في عملية الإنشاء وتمرير الوسيطات باستخدام javaCompileOptions.annotationProcessorOptions {} DSL في ملف build.gradle على مستوى الوحدة:

      Groovy

      android {
        ...
        defaultConfig {
          ...
          javaCompileOptions {
            annotationProcessorOptions {
              className 'com.example.MyProcessor'
              // Arguments are optional.
              arguments = [ foo : 'bar' ]
            }
          }
        }
      }
          

      Kotlin

      android {
        ...
        defaultConfig {
          ...
          javaCompileOptions {
            annotationProcessorOptions {
              className = "com.example.MyProcessor"
              // Arguments are optional.
              arguments(mapOf(foo to "bar"))
            }
          }
        }
      }
          

      إذا أردت تطبيق معالج تعليقات توضيحية في وقت الترجمة البرمجية ولكن بدون تضمينه في حزمة APK، استخدِم نطاق التبعية annotationProcessor:

      Groovy

      dependencies {
          compile 'com.google.dagger:dagger:2.0'
          annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
         // or use buildVariantAnnotationProcessor to target a specific build variant
      }
          

      Kotlin

      dependencies {
          implementation("com.google.dagger:dagger:2.0")
          annotationProcessor("com.google.dagger:dagger-compiler:2.0")
         // or use buildVariantAnnotationProcessor to target a specific build variant
      }
          
    • للحصول على قائمة بالمعلَمات التي يمكنك ضبطها، نفِّذ ما يلي من سطر الأوامر:

      java -jar /build-tools/jack.jar --help-properties
      

    • تلقائيًا، إذا كان حجم الذاكرة المؤقتة لبرنامج Gradle الخفي يبلغ 1.5 غيغابايت على الأقل، سيتم تشغيل Jack في العملية نفسها التي يتم فيها تشغيل Gradle. لضبط حجم الذاكرة المخصّصة للعمليات في الخلفية، أضِف ما يلي إلى ملف gradle.properties:

      # This sets the daemon heap size to 1.5GB.
      org.gradle.jvmargs=-Xmx1536M