คุณสามารถตรวจสอบว่าโปรไฟล์การเริ่มต้นทำงานทำงานได้โดยใช้ Android Studio หรือดูข้อมูลเมตาของบิลด์ R8
ยืนยันด้วย Android Studio
หากต้องการยืนยันการเพิ่มประสิทธิภาพเลย์เอาต์ DEX ให้ใช้ Android Studio เพื่อเปิด APK และ
ตรวจสอบคลาสในไฟล์ DEX ตรวจสอบว่าclasses.dexหลักไม่ได้เต็ม
จนเกินไป หากแอปของคุณประกอบด้วยไฟล์ DEX ไฟล์เดียว คุณสามารถตรวจสอบได้ว่าแอปมีไฟล์ DEX 2 ไฟล์หรือไม่หลังจากเปิดใช้โปรไฟล์การเริ่มต้น
Android Studio จะเตือนคุณหากคลาสเริ่มต้นไม่พอดีกับไฟล์ DEX ไฟล์เดียว
หากต้องการรับข้อมูลการวินิจฉัยซึ่งรวมถึงจำนวนเมธอดที่ไม่ใช่การเริ่มต้นใน
คลาสการเริ่มต้น โปรดตรวจสอบว่าคอมไพเลอร์ R8 ได้รับการอัปเดตเป็นเวอร์ชัน 8.3.21 เป็นอย่างน้อยโดยทำการเปลี่ยนแปลงต่อไปนี้ในไฟล์ settings.gradle เมื่อ
คุณใช้โปรไฟล์การเริ่มต้น
Kotlin
pluginManagement { buildscript { repositories { mavenCentral() maven { url = uri("https://storage.googleapis.com/r8-releases/raw") } } dependencies { classpath("com.android.tools:r8:8.3.21") } } }
ดึงดูด
pluginManagement { buildscript { repositories { mavenCentral() maven { url uri('https://storage.googleapis.com/r8-releases/raw') } } dependencies { classpath 'com.android.tools:r8:8.3.6-dev" } } }
ตรวจสอบว่าคุณได้เพิ่ม --info หลัง
assembleRelease ในคำสั่งต่อไปนี้เมื่อสร้างด้วย Gradle
./gradlew assembleRelease --info
จากนั้นระบบจะพิมพ์การวินิจฉัยไปยังเทอร์มินัล
หากแอปหรือไลบรารีใดๆ อ้างอิง API ที่ไม่ได้แปลง การติดตั้งใช้งานความเข้ากันได้ที่รวมไว้ของคลาสเหล่านี้จะอยู่ในไฟล์ DEX สุดท้ายเสมอ ไฟล์ DEX สุดท้ายที่ไม่ได้แปลงนี้ไม่ได้เข้าร่วมในการเพิ่มประสิทธิภาพเลย์เอาต์ DEX
ยืนยันด้วยข้อมูลเมตาของแพ็กเกจ
ตั้งแต่ AGP 8.8 เป็นต้นไป R8 จะแสดงผลข้อมูลเมตาใน Android App Bundle (AAB) ซึ่งคุณใช้เพื่อตรวจสอบว่าการเพิ่มประสิทธิภาพเลย์เอาต์ DEX สำเร็จหรือไม่ หากต้องการตรวจสอบว่าการเพิ่มประสิทธิภาพทํางานได้หรือไม่ ให้ทําดังนี้
สร้าง AAB ของแอปโดยทำดังนี้
./gradlew app:bundleReleaseตรวจสอบว่ามีไฟล์ DEX อย่างน้อย 1 ไฟล์ที่มีข้อความ
"startup": trueเปิดข้อมูลเมตา
unzip -j -o path-to-aab BUNDLE-METADATA/com.android.tools/r8.json && jq .dexFiles r8.jsonเส้นทางไปยัง AAB อาจมีลักษณะดังนี้
app/build/outputs/bundle/release/app-release.aabตรวจสอบเอาต์พุตซึ่งควรมีลักษณะดังนี้
inflating: r8.json [ { "checksum": "f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951", "startup": true } ]
หากเห็นเฉพาะ
"startup": falseในข้อมูลเมตา คุณจะต้อง เปิดใช้โปรไฟล์เริ่มต้นและตรวจสอบว่าโปรไฟล์เริ่มต้น ไม่ได้ถูกปกปิดตรวจสอบว่าค่า SHA-256 จากข้อมูลเมตาตรงกับค่าจาก AAB หากต้องการ รับค่า SHA-256 สำหรับไฟล์ DEX ทั้งหมด ให้เรียกใช้คำสั่งต่อไปนี้
unzip -o path-to-aab */dex/*.dex && sha256sum */dex/*เอาต์พุตควรมีลักษณะดังนี้
Archive: app/build/outputs/bundle/release/myapp-release.aab inflating: base/dex/classes.dex f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951 base/dex/classes.dexเปรียบเทียบค่าแฮชกับค่า "checksum" จากขั้นตอนที่ 1 หากค่า SHA-256 ไม่ตรงกัน อาจมีขั้นตอนการคอมไพล์ที่รบกวนความสามารถของ R8 ในการส่งออกไฟล์ DEX