รวมสัญลักษณ์เนทีฟไว้ในบิลด์รุ่น

โดยค่าเริ่มต้น ระบบจะถอดไลบรารีโค้ดเนทีฟในบิลด์รุ่นของแอปออก การถอดประกอบด้วยการนำตารางสัญลักษณ์และข้อมูลการแก้ไขข้อบกพร่องที่อยู่ในไลบรารีเนทีฟที่แอปใช้ออก การถอดไลบรารีโค้ดเนทีฟจะทำให้ไฟล์มีขนาดเล็กลงอย่างมาก แต่คุณจะไม่สามารถวินิจฉัยข้อขัดข้องใน Google Play Console ได้เนื่องจากข้อมูลขาดหายไป (เช่น ชื่อคลาสและฟังก์ชัน) หากต้องการแก้ไขข้อขัดข้อง คุณต้องรวมไฟล์สัญลักษณ์การแก้ไขข้อบกพร่องไว้กับแอปใน Play Console

อัปโหลดไฟล์สัญลักษณ์

Google Play Console จะรายงานข้อขัดข้องที่เกิดในแอปเองในส่วน Android vitals คุณสามารถสร้างและอัปโหลดไฟล์สัญลักษณ์การแก้ไขข้อบกพร่องของระบบสำหรับแอปได้ง่ายๆ ในไม่กี่ขั้นตอน ไฟล์นี้เปิดใช้การติดตามกองซ้อนข้อขัดข้องของระบบที่แทนที่ด้วยสัญลักษณ์ (ซึ่งรวมถึงชื่อคลาสและฟังก์ชัน) ใน Android Vitals เพื่อช่วยแก้ไขข้อบกพร่องของแอปในเวอร์ชันที่ใช้งานจริง ขั้นตอนเหล่านี้จะแตกต่างกันไปตามเวอร์ชันของปลั๊กอิน Android Gradle ที่ใช้ในโปรเจ็กต์ และขึ้นอยู่กับว่าคุณใช้ Android App Bundle (แนะนำ) หรือ APK

ปลั๊กอิน Android Gradle เวอร์ชัน 4.1 ขึ้นไป

หากโปรเจ็กต์สร้าง Android App Bundle (AAB) คุณสามารถกำหนดค่าบิลด์ให้รวมไฟล์สัญลักษณ์สำหรับแก้ไขข้อบกพร่องแบบเนทีฟไว้ใน AAB โดยอัตโนมัติเพื่อให้ระบบอัปโหลดไฟล์ดังกล่าวไปยัง Play Console เมื่อคุณเผยแพร่แอป หากต้องการรวมไฟล์นี้ไว้ในบิลด์รุ่นที่เผยแพร่ ให้เพิ่มข้อมูลต่อไปนี้ลงในไฟล์ build.gradle.kts ของแอป

android.buildTypes.release.ndk.debugSymbolLevel = { SYMBOL_TABLE | FULL }

เลือกระดับสัญลักษณ์การแก้ไขข้อบกพร่องจากรายการต่อไปนี้

  • ใช้ SYMBOL_TABLE เพื่อดูชื่อฟังก์ชันในสแต็กเทรซที่มีสัญลักษณ์ของ Play Console ระดับนี้รองรับรายการที่ลบไปแล้ว
  • ใช้ FULL เพื่อดูชื่อฟังก์ชัน ไฟล์ และหมายเลขบรรทัดในสแต็กเทรซที่มีสัญลักษณ์ของ Play Console

หากเป็นโปรเจ็กต์สร้าง APK ให้ใช้การตั้งค่า android.buildTypes.release.ndk.debugSymbolLevel ที่แสดงก่อนหน้านี้เพื่อสร้างไฟล์สัญลักษณ์สำหรับแก้ไขข้อบกพร่องแบบเนทีฟแยกกัน อัปโหลดไฟล์สัญลักษณ์การแก้ไขข้อบกพร่องแบบเนทีฟไปยัง Google Play Console ด้วยตนเอง (กระบวนการนี้คล้ายกับอัปโหลดไฟล์การแมปเพื่อถอดรหัสสแต็กเทรซ) เนื่องจากเป็นส่วนหนึ่งของกระบวนการบิลด์ ปลั๊กอิน Android Gradle จะเอาต์พุตไฟล์นี้ในตำแหน่งของโปรเจ็กต์ดังต่อไปนี้

app/build/outputs/native-debug-symbols/<var>variant-name</var>/native-debug-symbols.zip

ปลั๊กอิน Android Gradle เวอร์ชัน 4.0 ลงไป (และระบบบิลด์อื่นๆ)

เนื่องจากเป็นส่วนหนึ่งของกระบวนการบิลด์ ปลั๊กอิน Android Gradle จะเก็บสำเนาของไลบรารีที่ยังไม่ได้ Strip เอาไว้ในไดเรกทอรีของโปรเจ็กต์ โครงสร้างไดเรกทอรีนี้คล้ายกับโครงสร้างต่อไปนี้

app/build/intermediates/cmake/universal/release/obj/
├── armeabi-v7a/
│   ├── libgameengine.so
│   ├── libothercode.so
│   └── libvideocodec.so
├── arm64-v8a/
│   ├── libgameengine.so
│   ├── libothercode.so
│   └── libvideocodec.so
├── x86/
│   ├── libgameengine.so
│   ├── libothercode.so
│   └── libvideocodec.so
└── x86_64/
    ├── libgameengine.so
    ├── libothercode.so
    └── libvideocodec.so
  1. บีบอัดเนื้อหาของไดเรกทอรีนี้

    cd app/build/intermediates/cmake/universal/release/obj
    zip -r symbols.zip .
    
  2. อัปโหลดไฟล์ symbols.zip ไปยัง Google Play Console ด้วยตนเอง