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

الاعتماديات:
الإصدار الأدنى الإصدار التلقائي ملاحظات
Gradle 2.14.1 2.14.1 لمزيد من المعلومات، اطّلِع على تحديث Gradle.
أدوات تصميم حزمة تطوير البرامج (SDK) 23.0.2 23.0.2 تثبيت أو ضبط أدوات إنشاء حزمة تطوير البرامج (SDK).
جديد:
  • يستخدم الإصدار 2.14.1 من Gradle، الذي يتضمّن تحسينات في الأداء وميزات جديدة، ويحلّ ثغرة أمنية تسمح بتصعيد الامتيازات المحلية عند استخدام عملية Gradle في الخلفية. لمزيد من التفاصيل، يُرجى الاطّلاع على ملاحظات إصدار Gradle.
  • باستخدام externalNativeBuild {} DSL، يتيح لك Gradle الآن الربط بمصادر C/C++‎ وتجميع مكتبات C/C++‎ باستخدام CMake أو ndk-build. بعد إنشاء مكتبات C/C++، يجمعها Gradle في حزمة APK. لمزيد من المعلومات حول استخدام CMake وndk-build مع Gradle، يمكنك الاطّلاع على إضافة رمز C وC++ إلى مشروعك.
  • عند تشغيل عملية إنشاء من سطر الأوامر، يحاول Gradle الآن تنزيل أي مكوّنات أو تحديثات مفقودة في حزمة SDK يعتمد عليها مشروعك تلقائيًا. لمزيد من المعلومات، اطّلِع على مقالة التنزيل التلقائي للحِزم المفقودة باستخدام Gradle.
  • تتيح ميزة التخزين المؤقت التجريبية الجديدة في Gradle تسريع أوقات الإنشاء من خلال إجراء عملية التحويل إلى ملفات ‎.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 على مستوى الوحدة:

    أنيق

    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 إصدارات غير مضغوطة ومتوافقة من مكتبات C/C++ مع حزمة APK. يمنع ذلك PackageManager من نسخ مكتبات C/C++ من حِزمة APK إلى نظام الملفات على الجهاز أثناء التثبيت، كما يوفّر ميزة إضافية تتمثّل في تصغير حجم التحديثات التفاضلية لتطبيقك.
  • يمكنك الآن تحديد versionNameSuffix و applicationIdSuffix لنكهات المنتجات. (المشكلة 59614)
التغييرات:
  • تعرض getDefaultProguardFile الآن ملفات ProGuard التلقائية التي يوفّرها مكوّن إضافي متوافق مع Android لنظام Gradle، ولم تعُد تستخدم الملفات المتوفّرة في حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
  • تحسين أداء وميزات برنامج Jack المجمّع:
    • يتوافق Jack الآن مع تغطية اختبار Jacoco عند ضبط testCoverageEnabled على true.
    • تحسين التوافق مع معالجات التعليقات التوضيحية يتم تلقائيًا تطبيق معالِجات التعليقات التوضيحية في مسار الفئة، مثل أي تبعيات compile، على عملية الإنشاء. يمكنك أيضًا تحديد معالج تعليقات توضيحية في عملية الإنشاء وتمرير الوسيطات باستخدام javaCompileOptions.annotationProcessorOptions {} DSL في ملف build.gradle على مستوى الوحدة:

      أنيق

      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:

      أنيق

      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