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

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

  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