ปลั๊กอิน Android Gradle 3.1.0 (มีนาคม 2018)

ปลั๊กอิน Android เวอร์ชันนี้กำหนดให้ต้องมีสิ่งต่อไปนี้

เวอร์ชันขั้นต่ำ เวอร์ชันเริ่มต้น หมายเหตุ
Gradle 4.4 4.4 ดูข้อมูลเพิ่มเติมได้ที่การอัปเดต Gradle
เครื่องมือสร้าง SDK 27.0.3 27.0.3 ติดตั้งหรือกำหนดค่าเครื่องมือสร้าง SDK โปรดทราบว่าคุณไม่จำเป็นต้องระบุเวอร์ชันสำหรับเครื่องมือสร้างโดยใช้พร็อพเพอร์ตี้ android.buildToolsVersion อีกต่อไป เนื่องจากปลั๊กอินจะใช้เวอร์ชันต่ำสุดที่จำเป็นโดยค่าเริ่มต้น

คอมไพเลอร์ DEX ใหม่, D8

โดยค่าเริ่มต้น ตอนนี้ Android Studio ใช้คอมไพเลอร์ DEX ใหม่ที่เรียกว่า D8 การคอมไพล์ DEX คือกระบวนการแปลงไบต์โค้ด .class เป็น ไบต์โค้ด .dex สำหรับ Android Runtime (หรือ Dalvik สำหรับ Android เวอร์ชันเก่า เมื่อเทียบกับคอมไพเลอร์ก่อนหน้าซึ่งเรียกว่า DX แล้ว D8 คอมไพล์ได้เร็วกว่าและสร้างไฟล์ DEX ที่มีขนาดเล็กลง ทั้งยังคงประสิทธิภาพการทำงานของแอปในรันไทม์เท่าเดิมหรือ ดีกว่า

D8 ไม่ควรเปลี่ยนแปลงเวิร์กโฟลว์การพัฒนาแอปในแต่ละวันของคุณ อย่างไรก็ตาม หาก พบปัญหาที่เกี่ยวข้องกับคอมไพเลอร์ใหม่ โปรด รายงานข้อบกพร่อง คุณสามารถปิดใช้ D8 ชั่วคราวและใช้ DX ได้โดยใส่ข้อมูลต่อไปนี้ในไฟล์ gradle.properties ของโปรเจ็กต์

      android.enableD8=false
    

สำหรับโปรเจ็กต์ที่ ใช้ฟีเจอร์ภาษาของ Java 8, ระบบจะเปิดใช้กระบวนการ 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")
                      ...
                  }
              }
            
  • ตอนนี้แคชการสร้างของปลั๊กอิน Android จะนำรายการแคชที่มีอายุมากกว่า 30 วันออก

  • การส่ง "auto" ไปยัง resConfig จะไม่เลือกทรัพยากรสตริงเพื่อแพ็กเกจลงใน APK โดยอัตโนมัติอีกต่อไป หากคุณยังคงใช้ "auto" ปลั๊กอินจะแพ็กเกจทรัพยากรสตริงทั้งหมดที่แอปและการพึ่งพาอาศัยกันมีให้ ดังนั้น คุณควรระบุแต่ละภาษาที่ต้องการให้ปลั๊กอินแพ็กเกจลงใน APK แทน

  • เนื่องจากโมดูลภายในเครื่องไม่สามารถขึ้นอยู่กับ APK ทดสอบของแอป การเพิ่มทรัพยากร Dependency ในการทดสอบการวัดคุมโดยใช้การกำหนดค่า 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 ไว้ใน classpath ของ buildscript