Google is committed to advancing racial equity for Black communities. See how.
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

รับรายงานข้อขัดข้องของ Android NDK

หากแอป Android ของคุณมี ไลบรารีเนที ฟคุณสามารถเปิดใช้สแต็กเทรซแบบเต็มและรายงานข้อขัดข้องโดยละเอียดสำหรับโค้ดเนทีฟจาก Firebase Crashlytics พร้อมการอัปเดตเล็กน้อยสำหรับการกำหนดค่าบิวด์ของแอป คู่มือนี้อธิบายวิธีกำหนดค่าการรายงานข้อขัดข้องด้วย Firebase Crashlytics SDK ใหม่

ก่อนที่คุณจะเริ่ม

ในการเริ่มต้นให้ ตั้งค่า Crashlytics ด้วย Firebase Crashlytics SDK

ขั้นตอนที่ 1 : อัปเดตการกำหนดค่า Gradle ของคุณ

ใน build.gradle ระดับแอปของคุณให้เพิ่มการพึ่งพารันไทม์ Crashlytics NDK:

apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.crashlytics'

dependencies {
    // ...

    // Add the Crashlytics NDK dependency (if you have the
    // Firebase Crashlytics dependency, replace it).
    implementation 'com.google.firebase:firebase-crashlytics:17.2.1'
    implementation 'com.google.firebase:firebase-crashlytics-ndk:17.2.1'
}

// …
android {
    // ...
    buildTypes {
        release {
            // Add this extension
            firebaseCrashlytics {
                // Enable processing and uploading of native symbols to Crashlytics
                // servers. By default, this is disabled to improve build speeds.
                // This flag must be enabled to see properly-symbolicated native
                // stack traces in the Crashlytics dashboard.
                nativeSymbolUploadEnabled true
            }
        }
    }
}

ขั้นตอนที่ 2 : เปิดใช้งานการอัปโหลดสัญลักษณ์ดั้งเดิม

ในการสร้างสแต็กเทรซที่อ่านได้จากการขัดข้องของ NDK Crashlytics จำเป็นต้องทราบเกี่ยวกับสัญลักษณ์ในไบนารีดั้งเดิมของคุณ ปลั๊กอิน Gradle ของเรามีงาน uploadCrashlyticsSymbolFile BUILD_VARIANT เพื่อทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติ (ในการเข้าถึงงานนี้ตรวจสอบให้แน่ใจว่า nativeSymbolUploadEnabled ถูกตั้งค่าเป็น true)

เพื่อให้ชื่อเมธอดปรากฏในสแต็กเทรซของคุณคุณต้องเรียกใช้งาน uploadCrashlyticsSymbolFile BUILD_VARIANT อย่างชัดเจนหลังจากแต่ละ uploadCrashlyticsSymbolFile BUILD_VARIANT ของไลบรารี NDK ของคุณ ตัวอย่างเช่น:

>./gradlew app:assembleBUILD_VARIANT\
           app:uploadCrashlyticsSymbolFileBUILD_VARIANT

ขั้นตอนที่ 3 (ทางเลือก): อัปโหลดสัญลักษณ์สำหรับการอ้างอิงภายนอก

งานการอัปโหลดสัญลักษณ์ของเราถือว่าคุณกำลังสร้างไลบรารีดั้งเดิมของคุณเป็นส่วนหนึ่งของงานสร้าง Gradle ของคุณโดยใช้เครื่องมือสร้าง NDK มาตรฐานเช่น CMake หากคุณมีไลบรารีเนทีฟที่สร้างขึ้นจากภายนอกหรือกำลังใช้กระบวนการสร้าง NDK ที่กำหนดเองภายใน Gradle คุณอาจต้องระบุเส้นทางไปยังไลบรารีที่ถูกปล้นและไม่ถูกปิดกั้นของคุณอย่างชัดเจน ส่วนขยาย firebaseCrashlytics มีคุณสมบัติในการทำสิ่งนี้: strippedNativeLibsDir และ unstrippedNativeLibsDir

// …
android {
    // ...
    buildTypes {
        release {
            firebaseCrashlytics {
                nativeSymbolUploadEnabled true
                strippedNativeLibsDir ‘path/to/stripped/parent/dir’
                unstrippedNativeLibsDir ‘path/to/unstripped/parent/dir’
            }
        }
    }
}

ปลั๊กอินของเราถือว่าไลบรารีอยู่ในไดเร็กทอรีย่อยเฉพาะสถาปัตยกรรมภายใต้ไดเร็กทอรีที่ระบุและคู่ไลบรารีแบบ stripped / unstripped ที่เกี่ยวข้องมีพา ธ เหมือนกันภายใต้ไดเร็กทอรีนั้น ตัวอย่างเช่น:

strippedNativeLibsDir/
 +- x86/
      |
      +- libfoo.so
      +- libbar.so
 +- arm64/
      |
      +- libfoo.so
      +- libbar.so

unstrippedNativeLibsDir/
 +- x86/
      |
      +- libfoo.so
      +- libbar.so
 +- arm64/
      |
      +- libfoo.so
      +- libbar.so

หากระบบ uploadCrashlyticsSymbolFileBUILD_VARIANT ของคุณไม่เป็นไปตามโครงสร้าง / รูปแบบการตั้งชื่อข้างต้นให้สร้างโครงสร้างนี้ด้วยตนเองบนดิสก์ภายในเครื่องของคุณก่อนที่จะเรียกใช้งาน uploadCrashlyticsSymbolFileBUILD_VARIANT

ขั้นตอนที่ 4 (ไม่บังคับ): ปรับแต่งรายงานข้อขัดข้อง NDK

คุณสามารถเลือกที่จะรวมส่วนหัว crashlytics.h ในโค้ด C ++ ของคุณเพื่อเพิ่มข้อมูลเมตาในรายงานข้อขัดข้องของ NDK เช่นบันทึกคีย์แบบกำหนดเองและ ID ผู้ใช้ crashlytics.h พร้อมใช้งานเป็นไลบรารี C ++ ส่วนหัวเท่านั้นใน Firebase Android SDK GitHub Repository อ่านความคิดเห็นในไฟล์ส่วนหัวสำหรับคำแนะนำในการใช้ NDK C ++ API

ขั้นตอนที่ 5 : ดูรายงานข้อขัดข้อง

ตรวจสอบว่า Crashlytics รายงานข้อขัดข้อง NDK อย่างถูกต้องโดยการสร้างแอปอัปโหลดสัญลักษณ์และบังคับให้เกิดข้อขัดข้องในระบบ คุณจะต้องรีสตาร์ทแอปหลังจากที่แอปขัดข้องเพื่อให้ Crashlytics ส่งรายงาน คุณควรเห็นข้อขัดข้องใน คอนโซล Firebase ภายในไม่กี่นาที

การแก้ไขปัญหา