ปลั๊กอิน Android Gradle 2.2.0 (กันยายน 2016)

การขึ้นต่อกัน
เวอร์ชันขั้นต่ำ เวอร์ชันเริ่มต้น หมายเหตุ
Gradle 2.14.1 2.14.1 ดูข้อมูลเพิ่มเติมได้ที่การอัปเดต Gradle
เครื่องมือสร้าง SDK 23.0.2 23.0.2 ติดตั้งหรือกำหนดค่าเครื่องมือสร้าง SDK
ใหม่:
  • ใช้ Gradle 2.14.1 ซึ่งมีการปรับปรุงประสิทธิภาพ และฟีเจอร์ใหม่ รวมถึงแก้ไขช่องโหว่ด้านความปลอดภัยที่อนุญาต การเพิ่มสิทธิ์ในเครื่องเมื่อใช้ Gradle Daemon ดูรายละเอียดเพิ่มเติมได้ที่ บันทึกประจำรุ่นของ Gradle
  • ตอนนี้ Gradle ช่วยให้คุณลิงก์กับแหล่งที่มาแบบเนทีฟและคอมไพล์ไลบรารีแบบเนทีฟได้โดยใช้ CMake หรือ ndk-build โดยใช้ DSL externalNativeBuild {} หลังจากสร้างไลบรารีแบบเนทีฟแล้ว Gradle จะแพ็กเกจไลบรารีเหล่านั้นลงใน APK ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ CMake และ ndk-build กับ Gradle ได้ที่เพิ่มโค้ด C และ C++ ลงใน โปรเจ็กต์
  • เมื่อเรียกใช้ บิลด์จากบรรทัดคำสั่ง ตอนนี้ Gradle จะพยายามดาวน์โหลดโดยอัตโนมัติ คอมโพเนนต์ SDK ที่ขาดหายไปหรือการอัปเดตที่โปรเจ็กต์ของคุณต้องใช้ ดูข้อมูลเพิ่มเติมได้ที่ดาวน์โหลดแพ็กเกจที่ขาดหายไปโดยอัตโนมัติ ด้วย Gradle
  • ฟีเจอร์แคชเวอร์ชันทดลองใหม่ช่วยให้ Gradle เร่งเวลาบิลด์ได้โดยการ ดำเนินการ dex ล่วงหน้า จัดเก็บ และนำเวอร์ชันที่ดำเนินการ dex ล่วงหน้าของ ไลบรารีกลับมาใช้ใหม่ ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ฟีเจอร์ทดลองนี้ได้ในคำแนะนำสร้าง แคช
  • ปรับปรุงประสิทธิภาพการสร้างโดยใช้ไปป์ไลน์การแพ็กเกจเริ่มต้นใหม่ ซึ่งจะจัดการการซิป การลงนาม และ zipalign ในงานเดียว คุณ สามารถเปลี่ยนกลับไปใช้เครื่องมือการแพ็กเกจเวอร์ชันเก่าได้โดยเพิ่ม android.useOldPackaging=true ลงในไฟล์ gradle.properties ขณะใช้เครื่องมือการแพ็กเกจแบบใหม่ คุณจะใช้zipalignDebugไม่ได้ อย่างไรก็ตาม คุณสามารถสร้างเองได้โดยการเรียกใช้เมธอด createZipAlignTask(String taskName, File inputFile, File outputFile)
  • ตอนนี้การรับรอง APK ใช้ APK Signature Scheme v2 นอกเหนือจากการรับรอง JAR แบบเดิม แพลตฟอร์ม Android ทั้งหมดยอมรับ APK ที่ได้ การแก้ไข APK เหล่านี้หลังจากลงนามจะทำให้ลายเซ็น v2 ใช้งานไม่ได้และป้องกันการติดตั้งในอุปกรณ์ หากต้องการปิดใช้ฟีเจอร์นี้ ให้เพิ่มโค้ดต่อไปนี้ลงในไฟล์ build.gradle ระดับโมดูล

    Groovy

    android {
      ...
      signingConfigs {
        config {
          ...
          v2SigningEnabled false
        }
      }
    }
          

    Kotlin

    android {
      ...
      signingConfigs {
        create("config") {
          ...
          v2SigningEnabled = false
        }
      }
    }
          
  • สำหรับการสร้าง Multidex ตอนนี้คุณสามารถใช้กฎ ProGuard เพื่อกำหนดคลาสที่ Gradle ควรคอมไพล์ลงในไฟล์ DEX main ของแอปได้แล้ว เนื่องจาก ระบบ Android จะโหลดไฟล์ DEX หลักก่อนเมื่อเริ่มต้นแอป คุณ จึงจัดลำดับความสำคัญของบางคลาสเมื่อเริ่มต้นได้โดยคอมไพล์คลาสเหล่านั้นลงในไฟล์ DEX หลัก หลังจากสร้างไฟล์การกำหนดค่า ProGuard สำหรับ ไฟล์ DEX หลักโดยเฉพาะแล้ว ให้ส่งเส้นทางของไฟล์การกำหนดค่าไปยัง Gradle โดยใช้ buildTypes.multiDexKeepProguard การใช้ DSL นี้แตกต่าง จากการใช้ buildTypes.proguardFiles ซึ่งมีกฎ ProGuard ทั่วไป สำหรับแอปและไม่ได้ระบุคลาสสำหรับไฟล์ DEX หลัก
  • เพิ่มการรองรับแฟล็ก android:extractNativeLibs ซึ่งจะช่วยลดขนาดของแอปเมื่อติดตั้งใน อุปกรณ์ เมื่อตั้งค่าแฟล็กนี้เป็น false ในองค์ประกอบ <application> ของไฟล์ Manifest ของแอป Gradle จะแพ็กเกจไลบรารีแบบเนทีฟเวอร์ชันที่ไม่ได้บีบอัดและ จัดแนวไว้กับ APK ซึ่งจะป้องกันไม่ให้ PackageManager คัดลอกไลบรารีแบบเนทีฟจาก APK ไปยังระบบไฟล์ของอุปกรณ์ในระหว่างการติดตั้ง และยังช่วยให้การอัปเดตเดลต้าของแอปมีขนาดเล็กลงอีกด้วย
  • ตอนนี้คุณระบุ versionNameSuffix และ applicationIdSuffix สำหรับรสชาติของผลิตภัณฑ์ได้แล้ว (ปัญหา 59614)
การเปลี่ยนแปลง:
  • getDefaultProguardFile จะแสดงไฟล์ ProGuard เริ่มต้น ที่ปลั๊กอิน Android สำหรับ Gradle จัดเตรียมให้ และจะไม่ใช้ ไฟล์ใน Android SDK อีกต่อไป
  • ปรับปรุงประสิทธิภาพและฟีเจอร์ของคอมไพเลอร์ Jack ดังนี้
    • ตอนนี้ Jack รองรับความครอบคลุมของการทดสอบ Jacoco เมื่อตั้งค่า testCoverageEnabled เป็น true แล้ว
    • ปรับปรุงการรองรับสำหรับโปรเซสเซอร์คำอธิบายประกอบ ระบบจะใช้ตัวประมวลผล คำอธิบายประกอบใน Classpath เช่น การขึ้นต่อกันของ compile โดยอัตโนมัติกับการสร้าง คุณยังระบุตัวประมวลผลคำอธิบายประกอบในการสร้างและส่งอาร์กิวเมนต์ได้โดยใช้ DSL javaCompileOptions.annotationProcessorOptions {} ในไฟล์ระดับโมดูล build.gradle

      Groovy

      android {
        ...
        defaultConfig {
          ...
          javaCompileOptions {
            annotationProcessorOptions {
              className 'com.example.MyProcessor'
              // Arguments are optional.
              arguments = [ foo : 'bar' ]
            }
          }
        }
      }
          

      Kotlin

      android {
        ...
        defaultConfig {
          ...
          javaCompileOptions {
            annotationProcessorOptions {
              className = "com.example.MyProcessor"
              // Arguments are optional.
              arguments(mapOf(foo to "bar"))
            }
          }
        }
      }
          

      หากต้องการใช้ตัวประมวลผลคำอธิบายประกอบในเวลาคอมไพล์ แต่ไม่รวมไว้ใน APK ให้ใช้ annotationProcessor ขอบเขตการขึ้นต่อกัน

      Groovy

      dependencies {
          compile 'com.google.dagger:dagger:2.0'
          annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
         // or use buildVariantAnnotationProcessor to target a specific build variant
      }
          

      Kotlin

      dependencies {
          implementation("com.google.dagger:dagger:2.0")
          annotationProcessor("com.google.dagger:dagger-compiler:2.0")
         // or use buildVariantAnnotationProcessor to target a specific build variant
      }
          
    • หากต้องการดูรายการพารามิเตอร์ที่ตั้งค่าได้ ให้เรียกใช้คำสั่งต่อไปนี้จากบรรทัดคำสั่ง

      java -jar /build-tools/jack.jar --help-properties
      

    • โดยค่าเริ่มต้น หากขนาดฮีปของ Gradle Daemon มีขนาดอย่างน้อย 1.5 GB ตอนนี้ Jack จะทำงานในกระบวนการเดียวกับ Gradle หากต้องการปรับ ขนาดฮีปของ Daemon ให้เพิ่มข้อมูลต่อไปนี้ลงในไฟล์ gradle.properties

      # This sets the daemon heap size to 1.5GB.
      org.gradle.jvmargs=-Xmx1536M