ปลั๊กอิน Android Gradle 2.2.0 (กันยายน 2016)
- Dependency
- ใหม่:
-
- ใช้ Gradle 2.14.1 ซึ่งมีการปรับปรุงประสิทธิภาพและฟีเจอร์ใหม่ รวมถึงแก้ไขช่องโหว่ด้านความปลอดภัยที่อนุญาตให้มีการเพิ่มสิทธิ์ระดับท้องถิ่นเมื่อใช้เดรัม Gradle ดูรายละเอียดเพิ่มเติมได้ที่ บันทึกประจำรุ่นของ Gradle
- ตอนนี้ Gradle ให้คุณลิงก์กับแหล่งที่มาแบบเนทีฟและคอมไพล์ไลบรารีแบบเนทีฟได้โดยใช้ CMake หรือ ndk-build เมื่อใช้
externalNativeBuild {}
DSL หลังจากสร้างไลบรารีแบบเนทีฟแล้ว 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
ระดับโมดูลGroovy
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 หลัก - เพิ่มการรองรับ Flag
android:extractNativeLibs
ซึ่งสามารถลดขนาดของแอปเมื่อคุณติดตั้งลงในอุปกรณ์ เมื่อคุณตั้งค่า Flag นี้เป็นfalse
ในองค์ประกอบ<application>
ของไฟล์ Manifest ของแอป Gradle จะแพ็กเกจไลบรารีแบบเนทีฟเวอร์ชันที่ไม่ได้บีบอัดและเวอร์ชันที่สอดคล้องกับ APK ของคุณ ซึ่งจะป้องกันไม่ให้PackageManager
คัดลอกไลบรารีแบบเนทีฟจาก APK ไปยังระบบไฟล์ของอุปกรณ์ระหว่างการติดตั้ง และยังมีข้อดีเพิ่มเติมอีกอย่างหนึ่งคือทำให้การอัปเดตแบบ Delta ของแอปมีขนาดเล็กลง - ตอนนี้คุณระบุ
versionNameSuffix
และapplicationIdSuffix
สำหรับผลิตภัณฑ์ย่อยได้แล้ว (ปัญหา 59614)
- การเปลี่ยนแปลง:
-
-
ตอนนี้
getDefaultProguardFile
จะแสดงไฟล์ ProGuard เริ่มต้นที่พลั๊กอิน Android สำหรับ Gradle มีให้ และไม่ได้ใช้ไฟล์ใน Android SDK อีกต่อไป - ประสิทธิภาพและฟีเจอร์ของคอมไพเลอร์ Jack ที่ได้รับการปรับปรุง
- ตอนนี้ Jack รองรับการครอบคลุมการทดสอบ Jacoco เมื่อตั้งค่า
testCoverageEnabled
เป็นtrue
แล้ว - ปรับปรุงการรองรับโปรแกรมประมวลผลคำอธิบายประกอบ ระบบจะใช้โปรแกรมประมวลผลคำอธิบายประกอบใน classpath เช่น
compile
Dependency กับบิลด์โดยอัตโนมัติ นอกจากนี้ คุณยังระบุโปรแกรมประมวลผลคำอธิบายประกอบในบิลด์และส่งอาร์กิวเมนต์ได้โดยใช้javaCompileOptions.annotationProcessorOptions {}
DSL ในไฟล์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 }
- โดยค่าเริ่มต้น หากขนาดฮีปของเดรัม Gradle มีขนาดอย่างน้อย 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 |