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

    أنيق

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

    Kotlin

    android {
      ...
      signingConfigs {
        create("config") {
          ...
          v2SigningEnabled = false
        }
      }
    }
          
  • بالنسبة إلى عمليات الإنشاء التي تتضمّن ملفات DEX متعددة، يمكنك الآن استخدام قواعد ProGuard لتحديد الفئات التي يجب أن يجمّلها Gradle في ملف DEX الرئيسي لتطبيقك. بما أنّ نظام Android يحمّل ملف DEX الرئيسي أولاً عند بدء تطبيقك، يمكنك منح الأولوية لفئات معيّنة عند بدء التشغيل من خلال تجميعها في ملف DEX الرئيسي. بعد إنشاء ملف إعداد ProGuard خاص بملف DEX الرئيسي، مرِّر مسار ملف الإعداد إلى Gradle باستخدام buildTypes.multiDexKeepProguard. يختلف استخدام لغة النطاق الخاصة بلغة Gradle ‏(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 يمكنك أيضًا تحديد معالج تعليقات توضيحية في عملية الإنشاء وتمرير الوسيطات باستخدام لغة النطاق الخاصة بلغة Gradle ‏(DSL) javaCompileOptions.annotationProcessorOptions {} في ملف 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