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

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

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

کامپایلر جدید DEX، D8

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

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

      android.enableD8=false
    

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

      android.enableIncrementalDesugaring=false.
    

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

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

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

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

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

  • ارسال "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'
            

رفع اشکالات

  • مشکلی که باعث می‌شد اندروید استودیو وابستگی‌ها را در بیلدهای ترکیبی به درستی تشخیص ندهد، برطرف شد.
  • مشکلی که باعث می‌شد هنگام بارگذاری چندین بار افزونه اندروید در یک ساخت واحد، خطای همگام‌سازی پروژه دریافت کنید، برطرف شد - برای مثال، زمانی که چندین زیرپروژه هر کدام افزونه اندروید را در مسیر کلاس اسکریپت ساخت خود قرار می‌دهند.