ปลั๊กอิน 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 ระบบจะเปิดใช้การแยกน้ำตาลแบบเพิ่มทีละรายการโดยค่าเริ่มต้น คุณปิดใช้ได้โดย ระบุข้อมูลต่อไปนี้ในไฟล์ gradle.properties ของโปรเจ็กต์

      android.enableIncrementalDesugaring=false.
    

ผู้ใช้เวอร์ชันตัวอย่าง: หากคุณใช้ D8 เวอร์ชันตัวอย่างอยู่แล้ว โปรดทราบว่า ตอนนี้ 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")
                      ...
                  }
              }
            
  • ตอนนี้ build cache ของปลั๊กอิน Android จะนำรายการแคชที่มีอายุมากกว่า 30 วันออก

  • การส่ง "auto" ไปยัง resConfig จะไม่เลือกทรัพยากรสตริงเพื่อแพ็กเกจลงใน APK โดยอัตโนมัติอีกต่อไป หากคุณยังคงใช้ "auto" ปลั๊กอินจะแพ็กเกจทรัพยากรสตริงทั้งหมดที่แอปและทรัพยากร Dependency ของแอปมีให้ ดังนั้น คุณควร ระบุภาษาแต่ละภาษาที่ต้องการให้ปลั๊กอินแพ็กเกจลงใน 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 ใน classpath ของ buildscript