افزونه اندروید Gradle نسخه ۲.۲.۰ (سپتامبر ۲۰۱۶)

وابستگی‌ها:
حداقل نسخه نسخه پیش‌فرض یادداشت‌ها
گرادل ۲.۱۴.۱ ۲.۱۴.۱ برای کسب اطلاعات بیشتر، به به‌روزرسانی Gradle مراجعه کنید.
ابزارهای ساخت SDK ۲۳.۰.۲ ۲۳.۰.۲ ابزارهای ساخت SDK را نصب یا پیکربندی کنید .
جدید:
  • از Gradle 2.14.1 استفاده می‌کند که شامل بهبودهای عملکرد و ویژگی‌های جدید است و یک آسیب‌پذیری امنیتی را که امکان افزایش امتیاز محلی را هنگام استفاده از سرویس Gradle فراهم می‌کند، برطرف می‌کند. برای جزئیات بیشتر، به یادداشت‌های انتشار Gradle مراجعه کنید.
  • با استفاده از externalNativeBuild {} DSL، Gradle اکنون به شما امکان می‌دهد تا به منابع بومی خود پیوند دهید و کتابخانه‌های بومی را با استفاده از CMake یا ndk-build کامپایل کنید. پس از ساخت کتابخانه‌های بومی، Gradle آنها را در APK شما بسته‌بندی می‌کند. برای کسب اطلاعات بیشتر در مورد استفاده از CMake و ndk-build با Gradle، بخش «افزودن کد C و C++ به پروژه خود» را مطالعه کنید.
  • وقتی از خط فرمان یک نسخه را می‌سازید ، Gradle اکنون سعی می‌کند هر مؤلفه یا به‌روزرسانی SDK مفقود شده‌ای را که پروژه شما به آن وابسته است، به‌طور خودکار دانلود کند. برای کسب اطلاعات بیشتر، دانلود خودکار بسته‌های مفقود شده با Gradle را مطالعه کنید.
  • یک ویژگی جدید ذخیره‌سازی آزمایشی به Gradle اجازه می‌دهد تا با پیش‌دکس کردن، ذخیره‌سازی و استفاده مجدد از نسخه‌های پیش‌دکس‌شده کتابخانه‌های شما، زمان ساخت را سرعت بخشد. برای کسب اطلاعات بیشتر در مورد استفاده از این ویژگی آزمایشی، راهنمای Build Cache را مطالعه کنید.
  • با اتخاذ یک خط لوله بسته‌بندی پیش‌فرض جدید که فشرده‌سازی، امضا و زیپ‌لاین کردن را در یک وظیفه مدیریت می‌کند، عملکرد ساخت را بهبود می‌بخشد. می‌توانید با اضافه کردن android.useOldPackaging=true به فایل gradle.properties خود، به استفاده از ابزارهای بسته‌بندی قدیمی‌تر برگردید. هنگام استفاده از ابزار بسته‌بندی جدید، وظیفه zipalignDebug در دسترس نیست. با این حال، می‌توانید با فراخوانی متد createZipAlignTask(String taskName, File inputFile, File outputFile) خودتان یکی ایجاد کنید.
  • امضای APK اکنون علاوه بر امضای سنتی JAR، از طرح امضای APK نسخه ۲ نیز استفاده می‌کند. همه پلتفرم‌های اندروید APKهای حاصل را می‌پذیرند. هرگونه تغییر در این APKها پس از امضا، امضای نسخه ۲ آنها را باطل می‌کند و از نصب روی دستگاه جلوگیری می‌کند. برای غیرفعال کردن این ویژگی، موارد زیر را به فایل build.gradle در سطح ماژول خود اضافه کنید:

    گرووی

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

    کاتلین

    android {
      ...
      signingConfigs {
        create("config") {
          ...
          v2SigningEnabled = false
        }
      }
    }
          
  • برای ساخت‌های چندبعدی (multidex)، اکنون می‌توانید از قوانین ProGuard برای تعیین اینکه Gradle کدام کلاس‌ها را باید در فایل DEX اصلی برنامه شما کامپایل کند، استفاده کنید. از آنجا که سیستم اندروید هنگام شروع برنامه، ابتدا فایل DEX اصلی را بارگذاری می‌کند، می‌توانید با کامپایل کردن کلاس‌های خاص در هنگام راه‌اندازی، آنها را در فایل DEX اصلی اولویت‌بندی کنید. پس از ایجاد یک فایل پیکربندی ProGuard به طور خاص برای فایل DEX اصلی خود، مسیر فایل پیکربندی را با استفاده از buildTypes.multiDexKeepProguard به Gradle ارسال کنید. استفاده از این DSL با استفاده از buildTypes.proguardFiles متفاوت است، که قوانین کلی ProGuard را برای برنامه شما ارائه می‌دهد و کلاس‌هایی را برای فایل DEX اصلی مشخص نمی‌کند.
  • پشتیبانی از پرچم android:extractNativeLibs را اضافه می‌کند، که می‌تواند هنگام نصب برنامه روی دستگاه، اندازه آن را کاهش دهد. وقتی این پرچم را در عنصر <application> در مانیفست برنامه خود روی false تنظیم می‌کنید، Gradle نسخه‌های فشرده نشده و هم‌تراز شده کتابخانه‌های بومی شما را با APK شما بسته‌بندی می‌کند. این کار مانع از کپی کردن کتابخانه‌های بومی شما از APK به سیستم فایل دستگاه PackageManager در حین نصب می‌شود و مزیت دیگری نیز دارد و آن کوچک‌تر کردن به‌روزرسانی‌های دلتا برنامه شماست.
  • اکنون می‌توانید versionNameSuffix و applicationIdSuffix را برای طعم‌های محصول مشخص کنید. ( شماره ۵۹۶۱۴ )
تغییرات:
  • getDefaultProguardFile اکنون فایل‌های پیش‌فرض ProGuard را که افزونه اندروید برای Gradle ارائه می‌دهد، برمی‌گرداند و دیگر از فایل‌های موجود در Android SDK استفاده نمی‌کند.
  • بهبود عملکرد و ویژگی‌های کامپایلر جک:
    • جک اکنون از پوشش تست Jacoco هنگام تنظیم testCoverageEnabled روی true پشتیبانی می‌کند.
    • پشتیبانی بهبود یافته برای پردازنده‌های حاشیه‌نویسی. پردازنده‌های حاشیه‌نویسی در classpath شما، مانند هرگونه وابستگی 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