ปลั๊กอิน Android Gradle เวอร์ชัน 2.2.0 (กันยายน 2016)
- ทรัพยากร Dependency:
- ใหม่:
-
- ใช้ 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 ของ ไลบรารีกลับมาใช้ใหม่ ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ฟีเจอร์แบบทดลองนี้ได้ที่ อ่านคู่มือแคช บิลด์
- ปรับปรุงประสิทธิภาพของบิลด์โดยใช้ไปป์ไลน์การแพ็กเกจเริ่มต้นใหม่
ซึ่งจัดการการบีบอัด การลงชื่อ และ การจัดแนว Zip ในงานเดียว คุณสามารถกลับไปใช้เครื่องมือการแพ็กเกจแบบเก่าได้โดยเพิ่ม
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ระดับโมดูลดึงดูด
android { ... signingConfigs { config { ... v2SigningEnabled false } } }
Kotlin
android { ... signingConfigs { create("config") { ... v2SigningEnabled = false } } }
- สำหรับการสร้าง multidex ตอนนี้คุณสามารถใช้กฎ ProGuard เพื่อกำหนดคลาสที่ Gradle ควรคอมไพล์ลงในไฟล์ DEX หลัก ของแอปได้แล้ว เนื่องจาก
ระบบ Android จะโหลดไฟล์ DEX หลักก่อนเมื่อเริ่มต้นแอป คุณ
จึงจัดลำดับความสำคัญของคลาสบางคลาสเมื่อเริ่มต้นได้โดยการคอมไพล์คลาสเหล่านั้นลงในไฟล์ DEX
หลัก หลังจากสร้างไฟล์การกำหนดค่า ProGuard สำหรับไฟล์ DEX หลักโดยเฉพาะแล้ว ให้ส่งเส้นทางของไฟล์การกำหนดค่าไปยัง Gradle โดยใช้
buildTypes.multiDexKeepProguardการใช้ DSL นี้แตกต่าง จากการใช้buildTypes.proguardFilesซึ่งมีกฎ ProGuard ทั่วไปสำหรับแอปและไม่ได้ระบุคลาสสำหรับไฟล์ DEX หลัก - เพิ่มการรองรับแฟล็ก
android:extractNativeLibsซึ่งสามารถลดขนาดของแอปเมื่อคุณติดตั้งแอปในอุปกรณ์ เมื่อตั้งค่าแฟล็กนี้เป็นfalseใน<application>องค์ประกอบของไฟล์ Manifest ของแอป Gradle จะแพ็กเกจไลบรารีแบบเนทีฟเวอร์ชันที่ไม่ได้บีบอัดและ จัดแนวแล้วลงใน APK ซึ่งจะป้องกันไม่ให้PackageManagerคัดลอกไลบรารีแบบเนทีฟจาก APK ไปยังระบบไฟล์ของอุปกรณ์ระหว่างการติดตั้ง และยังมีประโยชน์เพิ่มเติมคือทำให้การอัปเดตแบบเดลต้าของแอปมีขนาดเล็กลง - ตอนนี้คุณระบุ
versionNameSuffixและapplicationIdSuffixสำหรับ Product Flavor ได้แล้ว (ปัญหา 59614)
- การเปลี่ยนแปลง:
-
-
getDefaultProguardFileตอนนี้จะแสดงผลไฟล์ ProGuard เริ่มต้น ที่ปลั๊กอิน Android สำหรับ Gradle มีให้ และจะไม่ใช้ไฟล์ใน Android SDK อีกต่อไป - ปรับปรุงประสิทธิภาพและฟีเจอร์ของคอมไพเลอร์ Jack ดังนี้
- ตอนนี้ Jack รองรับการครอบคลุมการทดสอบ Jacoco เมื่อตั้งค่า
testCoverageEnabledเป็นtrue - ปรับปรุงการรองรับโปรเซสเซอร์สำหรับคำอธิบายประกอบ โปรเซสเซอร์สำหรับคำอธิบายประกอบใน classpath เช่น ทรัพยากร Dependency จะนำไปใช้กับบิลด์โดยอัตโนมัติ
compileนอกจากนี้ คุณยังระบุโปรเซสเซอร์สำหรับคำอธิบายประกอบในบิลด์และส่งอาร์กิวเมนต์ได้โดยใช้javaCompileOptions.annotationProcessorOptions {}DSL ในไฟล์build.gradleระดับโมดูลดึงดูด
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 ให้ใช้ขอบเขตทรัพยากร Dependency
annotationProcessorดังนี้ดึงดูด
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 }
- โดยค่าเริ่มต้น หากขนาดฮีปของ Gradle Daemon มีขนาดอย่างน้อย 1.5 GB ตอนนี้ Jack จะทำงานในกระบวนการเดียวกับ Gradle หากต้องการปรับขนาดฮีปของ Daemon ให้เพิ่มรายการต่อไปนี้ลงในไฟล์
gradle.properties# This sets the daemon heap size to 1.5GB. org.gradle.jvmargs=-Xmx1536M
หากต้องการดูรายการพารามิเตอร์ที่ตั้งค่าได้ ให้เรียกใช้คำสั่งต่อไปนี้จากบรรทัดคำสั่ง
java -jar /build-tools/jack.jar --help-properties
- ตอนนี้ Jack รองรับการครอบคลุมการทดสอบ Jacoco เมื่อตั้งค่า
-
| เวอร์ชันขั้นต่ำ | เวอร์ชันเริ่มต้น | หมายเหตุ | |
|---|---|---|---|
| Gradle | 2.14.1 | 2.14.1 | ดูข้อมูลเพิ่มเติมได้ที่การอัปเดต Gradle |
| เครื่องมือสร้าง SDK | 23.0.2 | 23.0.2 | ติดตั้งหรือกำหนดค่าเครื่องมือสร้าง SDK |