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

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

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