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

      أنيق

      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