پلاگین Android Gradle 3.1.0 (مارس 2018)

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

حداقل نسخه نسخه پیش فرض یادداشت ها
گریدل 4.4 4.4 برای کسب اطلاعات بیشتر، به روز رسانی Gradle را ببینید.
ابزارهای ساخت SDK 27.0.3 27.0.3 ابزارهای ساخت SDK را نصب یا پیکربندی کنید . به خاطر داشته باشید، دیگر نیازی به تعیین نسخه ای برای ابزارهای ساخت با استفاده از ویژگی android.buildToolsVersion ندارید—این افزونه به طور پیش فرض از حداقل نسخه مورد نیاز استفاده می کند.

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

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

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

      android.enableD8=false
    

برای پروژه‌هایی که از ویژگی‌های زبان جاوا 8 استفاده می‌کنند ، قندزدایی افزایشی به‌طور پیش‌فرض فعال است. با مشخص کردن موارد زیر در فایل 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")
                      ...
                  }
              }
            
  • کش ساخت افزونه اندروید اکنون ورودی‌های کش قدیمی‌تر از 30 روز را حذف می‌کند.

  • ارسال "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 را در مسیر کلاسی ساخت‌اسکریپ خود قرار می‌دهند.