افزایه Android Gradle 2.2.0 (سپتامبر ۲۰۱۶)

وابستگی‌ها:
حداقل نسخه نسخه پیش‌فرض یادداشت‌ها
Gradle ‫۲.۱۴.۱ ‫۲.۱۴.۱ برای کسب اطلاعات بیشتر، به‌روزرسانی Gradle را ببینید.
ابزارهای ساخت کیت توسعه نرم‌افزار ‫۲۳.۰.۲ ‫۲۳.۰.۲ «ابزارهای ساخت کیت توسعه نرم‌افزار» را نصب یا پیکربندی کنید.
جدید:
  • از Gradle 2.14.1 استفاده می‌کند که شامل بهبود عملکرد و ویژگی‌های جدید است و آسیب‌پذیری امنیتی را که هنگام استفاده از Gradle daemon اجازه می‌دهد امتیازهای محلی افزایش یابد رفع می‌کند. برای جزئیات بیشتر، یادداشت‌های انتشار 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 امکان می‌دهد با پیش‌دکس کردن، ذخیره کردن، و استفاده مجدد از نسخه‌های پیش‌دکس‌شده کتابخانه‌هایتان، زمان ساخت را تسریع کند. برای کسب اطلاعات بیشتر درباره استفاده از این ویژگی آزمایشی، راهنمای ساختن حافظه نهان را بخوانید.
  • با اتخاذ خط لوله بسته‌بندی پیش‌فرض جدیدی که فشرده‌سازی، امضا، و تراز کردن را در یک وظیفه انجام می‌دهد، عملکرد ساخت را بهبود می‌بخشد. با افزودن android.useOldPackaging=true به فایل gradle.properties می‌توانید به استفاده از ابزارهای بسته‌بندی قدیمی‌تر برگردید. هنگام استفاده از ابزار بسته‌بندی جدید، وظیفه zipalignDebug دردسترس نیست. بااین‌حال، با فراخوانی روش createZipAlignTask(String taskName, File inputFile, File outputFile) می‌توانید خودتان آن را ایجاد کنید.
  • امضای APK اکنون علاوه‌بر امضای استاندارد JAR از طرح امضای APK نسخه ۲ استفاده می‌کند. همه پلاتفرم‌های Android فایل‌های APK حاصل را می‌پذیرند. هرگونه تغییر در این فایل‌های APK پس‌از امضا کردن، امضاهای v2 آن‌ها را نامعتبر می‌کند و مانع نصب در دستگاه می‌شود. برای غیرفعال کردن این ویژگی، موارد زیر را به فایل build.gradle سطح واحد خود اضافه کنید:

    شیک

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

    کاتلین

    android {
      ...
      signingConfigs {
        create("config") {
          ...
          v2SigningEnabled = false
        }
      }
    }
          
  • برای ساخت‌های multidex، اکنون می‌توانید از قوانین ProGuard استفاده کنید تا تعیین کنید Gradle کدام کلاس‌ها را در فایل DEX اصلی برنامه شما کامپایل کند. چون سیستم Android هنگام شروع برنامه شما ابتدا فایل DEX اصلی را بار می‌کند، می‌توانید با تبدیل کردن کلاس‌های خاص به فایل DEX اصلی، آن‌ها را در زمان شروع برنامه در اولویت قرار دهید. پس‌از ایجاد فایل پیکربندی ProGuard به‌طور خاص برای فایل اصلی DEX، مسیر فایل پیکربندی را بااستفاده از buildTypes.multiDexKeepProguard به Gradle منتقل کنید. استفاده از این زبان توصیفی متفاوت است از استفاده از buildTypes.proguardFiles، که قوانین کلی ProGuard را برای برنامه شما ارائه می‌دهد و کلاس‌های فایل اصلی DEX را مشخص نمی‌کند.
  • از پرچم android:extractNativeLibs پشتیبانی می‌کند، که می‌تواند اندازه برنامه شما را هنگام نصب آن در دستگاه کاهش دهد. وقتی این پرچم را روی false در عنصر <application> مانیفست برنامه تنظیم می‌کنید، Gradle نسخه‌های فشرده‌نشده و ترازشده کتابخانه‌های C/C++ را با APK بسته‌بندی می‌کند. این از کپی شدن کتابخانه‌های C/C++ شما از APK به سیستم فایلPackageManager دستگاه درطول نصب جلوگیری می‌کند و مزیت اضافه کوچک‌تر شدن به‌روزرسانی‌های تفاضلی برنامه شما را دارد.
  • اکنون می‌توانید versionNameSuffix و applicationIdSuffix را برای طعم‌های محصول مشخص کنید. (Issue 59614)
تغییرات:
  • ‫getDefaultProguardFile اکنون فایل‌های پیش‌فرض ProGuard را که افزایه Android برای Gradle ارائه می‌دهد برمی‌گرداند و دیگر از فایل‌های موجود در «کیت توسعه نرم‌افزار 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' ]
            }
          }
        }
      }
          

      کاتلین

      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
      }
          

      کاتلین

      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 حداقل ۱٫۵ گیگابایت باشد، Jack اکنون در همان فرایند Gradle اجرا می‌شود. برای تنظیم اندازه پشته کارگزار، موارد زیر را به فایل gradle.properties اضافه کنید:

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