ปลั๊กอิน 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