افزایه Android Gradle نسخه ۳.۱.۰ (مارس ۲۰۱۸)

این نسخه افزایه Android به موارد زیر نیاز دارد:

حداقل نسخه نسخه پیش‌فرض یادداشت‌ها
Gradle ۴٫۴ ۴٫۴ برای کسب اطلاعات بیشتر، به‌روزرسانی Gradle را ببینید.
ابزارهای ساخت کیت توسعه نرم‌افزار ‫۲۷.۰.۳ ‫۲۷.۰.۳ «ابزارهای ساخت کیت توسعه نرم‌افزار» را نصب یا پیکربندی کنید. به‌خاطر داشته باشید که دیگر لازم نیست نسخه ابزارهای ساخت را بااستفاده از دارایی android.buildToolsVersion مشخص کنید—افزایه به‌طور پیش‌فرض از حداقل نسخه موردنیاز استفاده می‌کند.

گردآورنده جدید DEX،‏ D8

به‌طور پیش‌فرض، Android Studio اکنون از یک کامپایلر DEX جدید به نام D8 استفاده می‌کند. ترجمه DEX فرایند تبدیل .class بایت‌کد به .dex بایت‌کد برای «زمان اجرای Android» (یا Dalvik برای نسخه‌های قدیمی‌تر Android) است. در مقایسه با کامپایلر قبلی، که DX نامیده می‌شد، D8 سریع‌تر کامپایل می‌کند و فایل‌های DEX کوچک‌تری تولید می‌کند، و درعین‌حال عملکرد زمان اجرای برنامه یکسان یا بهتری دارد.

‫D8 نباید گردش کار توسعه برنامه روزانه شما را تغییر دهد. بااین‌حال، اگر با هرگونه مشکلی مربوط به کامپایلر جدید مواجه شدید، لطفاً گزارش اشکال ارسال کنید. می‌توانید موقتاً D8 را غیرفعال کنید و با افزودن موارد زیر به فایل gradle.properties پروژه، از DX استفاده کنید:

      android.enableD8=false
    

برای پروژه‌هایی که از ویژگی‌های زبان Java 8 استفاده می‌کنند، شکرزدایی افزایشی به‌طور پیش‌فرض فعال است. با مشخص کردن موارد زیر در فایل gradle.properties پروژه می‌توانید آن را غیرفعال کنید:

      android.enableIncrementalDesugaring=false.
    

کاربران پیش‌نمایش: اگر ازقبل از نسخه پیش‌نمایش D8 استفاده می‌کنید، توجه داشته باشید که اکنون دربرابر کتابخانه‌های موجود در ابزارهای ساخت SDK، نه JDK، کامپایل می‌شود. بنابراین، اگر به «میاناهای برنامه‌سازی کاربردی» که در JDK وجود دارند اما در کتابخانه‌های ابزارهای ساخت SDK وجود ندارند دسترسی پیدا کنید، خطای کامپایل دریافت می‌کنید.

تغییرات رفتار

  • هنگام ساختن چندین فایل APK که هرکدام یک ABI متفاوت را هدف‌یابی می‌کنند، دیگر به‌طور پیش‌فرض برای ABIهای زیر فایل APK تولید نمی‌کند: mips،‏ mips64، و armeabi.

    اگر می‌خواهید فایل‌های APK بسازید که این «رابط‌های دودویی کاربردی» را هدف‌یابی کند، باید از NDK r16b یا نسخه‌های پایین‌تر استفاده کنید و «رابط‌های دودویی کاربردی» را در فایل build.gradle خود مشخص کنید، همان‌طور که در زیر نشان داده شده است:

              splits {
                  abi {
                      include 'armeabi', 'mips', 'mips64'
                      ...
                  }
              }
            
              splits {
                  abi {
                      include("armeabi", "mips", "mips64")
                      ...
                  }
              }
            
  • افزایه Android اکنون ورودی‌های حافظه نهان ساخت حافظه نهان را که قدیمی‌تر از ۳۰ روز هستند تخلیه می‌کند.

  • انتقال "auto" به resConfig دیگر به‌طور خودکار منابع رشته‌ای را برای بسته‌بندی در APK شما انتخاب نمی‌کند. اگر به استفاده از "auto" ادامه دهید، افزایه همه منابع رشته‌ای را که برنامه شما و وابستگی‌هایش ارائه می‌دهند بسته‌بندی می‌کند. بنابراین، باید درعوض هر منطقه زبانی را که می‌خواهید افزایه در APK شما بسته‌بندی شود مشخص کنید.

  • ازآنجایی‌که واحدهای محلی نمی‌توانند به APK آزمایشی برنامه شما وابسته باشند، افزودن وابستگی‌ها به آزمایش‌های ابزاری شما بااستفاده از پیکربندی androidTestApi به‌جای androidTestImplementation باعث می‌شود Gradle هشدار زیر را صادر کند:

            WARNING: Configuration 'androidTestApi' is obsolete
            and has been replaced with 'androidTestImplementation'
            
            WARNING: Configuration 'androidTestApi' is obsolete
            and has been replaced with 'androidTestImplementation'
            

تصحیحات

  • مشکلی را برطرف می‌کند که در آن Android Studio وابستگی‌ها را در ساخت‌های ترکیبی به‌درستی تشخیص نمی‌داد.
  • مشکلی را برطرف می‌کند که در آن هنگام بار کردن افزایه Android چند بار در یک ساخت (برای مثال، وقتی چند زیرپروژه هرکدام افزایه Android را در مسیر کلاس buildscript خود دارند)، خطای همگام‌سازی پروژه دریافت می‌کنید.