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

ปลั๊กอิน Android เวอร์ชันนี้ต้องการสิ่งต่อไปนี้

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

D8 ซึ่งเป็นคอมไพเลอร์ DEX ใหม่

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

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

      android.enableD8=false
    

สำหรับโปรเจ็กต์ที่ใช้ฟีเจอร์ภาษาของ Java 8 ระบบจะเปิดใช้การกรอง Sugar ออกทีละส่วนโดยค่าเริ่มต้น คุณปิดใช้ได้โดยระบุข้อมูลต่อไปนี้ในไฟล์ 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 การทดสอบของแอปไม่ได้ การเพิ่มทรัพยากร 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 ไม่รู้จัก dependencies ในบิลด์คอมโพสิตอย่างถูกต้อง
  • แก้ไขปัญหาที่คุณได้รับข้อผิดพลาดในการซิงค์โปรเจ็กต์เมื่อโหลดปลั๊กอิน Android หลายครั้งในบิลด์เดียว เช่น เมื่อโปรเจ็กต์ย่อยหลายรายการมีปลั๊กอิน Android อยู่ใน classpath ของ buildscript