ยืนยันการเพิ่มประสิทธิภาพโปรไฟล์เริ่มต้น

คุณสามารถตรวจสอบว่าโปรไฟล์การเริ่มต้นทำงานทำงานอยู่หรือไม่โดยใช้ 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 สำเร็จหรือไม่ หากต้องการตรวจสอบว่าการเพิ่มประสิทธิภาพได้ผลหรือไม่ ให้ทำดังนี้

  1. สร้าง AAB ของแอป

    ./gradlew app:bundleRelease
    
  2. ตรวจสอบว่ามีไฟล์ DEX อย่างน้อย 1 ไฟล์ที่มีข้อความ "startup": true

    1. เปิดข้อมูลเมตา

      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

    2. ตรวจสอบเอาต์พุตซึ่งควรมีลักษณะดังนี้

          inflating: r8.json
      [
        {
          "checksum": "f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951",
          "startup": true
        }
      ]
      

    หากเห็นเฉพาะ "startup": false ในข้อมูลเมตา คุณจะต้องเปิดใช้โปรไฟล์เริ่มต้นและตรวจสอบว่าโปรไฟล์เริ่มต้นไม่ได้สร้างความสับสน

  3. ตรวจสอบว่าค่า 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