คุณสามารถตรวจสอบว่าโปรไฟล์การเริ่มต้นทำงานทำงานอยู่หรือไม่โดยใช้ Android Studio หรือดูที่ข้อมูลเมตาของบิลด์ R8
ยืนยันด้วย Android Studio
หากต้องการยืนยันการเพิ่มประสิทธิภาพเลย์เอาต์ DEX ให้ใช้ Android Studio เพื่อเปิด APK และตรวจสอบคลาสในไฟล์ DEX ตรวจสอบว่าclasses.dex
หลักไม่ได้กรอกข้อมูลจนเต็ม หากแอปของคุณประกอบด้วยไฟล์ DEX ไฟล์เดียว คุณสามารถตรวจสอบว่าแอปมีไฟล์ DEX 2 ไฟล์หรือไม่หลังจากเปิดใช้โปรไฟล์การเริ่มต้น
Android Studio จะเตือนคุณหากคลาสเริ่มต้นไม่พอดีในไฟล์ DEX ไฟล์เดียว
หากต้องการรับข้อมูลการวินิจฉัยที่มีจำนวนเมธอดที่ไม่ใช่การเริ่มต้นในคลาสเริ่มต้น ให้ตรวจสอบว่าคอมไพเลอร์ R8 อัปเดตเป็นเวอร์ชัน 8.3.36-dev เป็นอย่างน้อยโดยทำการเปลี่ยนแปลงต่อไปนี้ในไฟล์ 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.6-dev") } } }
Groovy
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 สุดท้ายที่ผ่านการกรอง Sugar ออกนี้จะไม่เข้าร่วมในการเพิ่มประสิทธิภาพเลย์เอาต์ 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