หากแอป Android ของคุณมี ไลบรารีดั้งเดิม คุณสามารถเปิดใช้งานการติดตามสแต็กแบบเต็มและรายงานข้อขัดข้องโดยละเอียดสำหรับโค้ดเนทีฟของคุณจาก Firebase Crashlytics พร้อมการอัปเดตเล็กน้อยในการกำหนดค่าบิวด์ของแอปของคุณ
คู่มือนี้จะอธิบายวิธีกำหนดค่าการรายงานข้อขัดข้องด้วย Firebase Crashlytics SDK สำหรับ NDK
หากคุณกำลังมองหาวิธีเริ่มต้นใช้งาน Crashlytics ในโปรเจ็กต์ Unity ของคุณ โปรดดู คู่มือการเริ่มต้นใช้งาน Unity
ก่อนที่คุณจะเริ่ม
หากคุณยังไม่ได้ เพิ่ม Firebase ลงในโปรเจ็กต์ Android ของคุณ หากไม่มีแอป Android คุณสามารถดาวน์โหลด แอปตัวอย่างได้
แนะนำ : หากต้องการรับ บันทึกเบรดครัมบ์ โดยอัตโนมัติเพื่อทำความเข้าใจการกระทำของผู้ใช้ที่นำไปสู่เหตุการณ์ขัดข้อง เหตุการณ์ที่ไม่ร้ายแรง หรือ ANR คุณต้องเปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase ของคุณ
หากโปรเจ็กต์ Firebase ที่มีอยู่ของคุณไม่ได้เปิดใช้งาน Google Analytics คุณสามารถเปิดใช้งาน Google Analytics ได้จาก แท็บ การรวมระบบ ของคุณ
หากคุณกำลังสร้างโปรเจ็กต์ Firebase ใหม่ ให้เปิดใช้งาน Google Analytics ในระหว่างขั้นตอนการสร้างโปรเจ็กต์
ขั้นตอนที่ 1 : เพิ่ม Crashlytics SDK สำหรับ NDK ลงในแอปของคุณ
ใน ไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติคือ<project>/<app-module>/build.gradle.kts
หรือ <project>/<app-module>/build.gradle
) ให้เพิ่มการพึ่งพาสำหรับ Crashlytics NDK ไลบรารี่สำหรับ Android เราขอแนะนำให้ใช้ Firebase Android BoM เพื่อควบคุมเวอร์ชันไลบรารีเพื่อประสบการณ์การใช้งาน Crashlytics ที่ดีที่สุด เราขอแนะนำ ให้เปิดใช้ Google Analytics ในโปรเจ็กต์ Firebase และเพิ่ม Firebase SDK สำหรับ Google Analytics ลงในแอปของคุณ
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.8.0")) // Add the dependencies for the Crashlytics NDK and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-crashlytics-ndk") implementation("com.google.firebase:firebase-analytics") }
เมื่อใช้ Firebase Android BoM แอปของคุณจะใช้ไลบรารี Firebase Android เวอร์ชันที่เข้ากันได้เสมอ
(ทางเลือก) เพิ่มการพึ่งพาไลบรารี Firebase โดยไม่ ใช้ BoM
หากคุณเลือกที่จะไม่ใช้ Firebase BoM คุณต้องระบุเวอร์ชันไลบรารี Firebase แต่ละเวอร์ชันในบรรทัดการขึ้นต่อกัน
โปรดทราบว่าหากคุณใช้ไลบรารี Firebase หลาย ไลบรารีในแอปของคุณ เราขอแนะนำอย่างยิ่งให้ใช้ BoM ในการจัดการเวอร์ชันไลบรารี ซึ่งจะทำให้แน่ใจได้ว่าทุกเวอร์ชันจะเข้ากันได้
dependencies { // Add the dependencies for the Crashlytics NDK and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-crashlytics-ndk:18.6.3") implementation("com.google.firebase:firebase-analytics:21.6.1") }
ขั้นตอนที่ 2 : เพิ่มปลั๊กอิน Crashlytics Gradle ลงในแอปของคุณ
ในไฟล์ Gradle ระดับราก (ระดับโครงการ) ของคุณ (
<project>/build.gradle.kts
หรือ<project>/build.gradle
) ให้เพิ่มปลั๊กอิน Crashlytics Gradle ลงในบล็อกplugins
:Kotlin
plugins { id("com.android.application") version "7.3.0" apply false // ... // Make sure that you have the Google services Gradle plugin dependency id("com.google.gms.google-services") version "4.4.1" apply false // Add the dependency for the Crashlytics Gradle plugin id("com.google.firebase.crashlytics") version "2.9.9" apply false }
Groovy
plugins { id 'com.android.application' version '7.3.0' apply false // ... // Make sure that you have the Google services Gradle plugin dependency id 'com.google.gms.google-services' version '4.4.1' apply false // Add the dependency for the Crashlytics Gradle plugin id 'com.google.firebase.crashlytics' version '2.9.9' apply false }
ในไฟล์ Gradle ของ โมดูล (ระดับแอป) (โดยปกติคือ
<project>/<app-module>/build.gradle.kts
หรือ<project>/<app-module>/build.gradle
) ให้เพิ่มปลั๊กอิน Crashlytics Gradle:Kotlin
plugins { id("com.android.application") // ... // Make sure that you have the Google services Gradle plugin id("com.google.gms.google-services") // Add the Crashlytics Gradle plugin id("com.google.firebase.crashlytics") }
Groovy
plugins { id 'com.android.application' // ... // Make sure that you have the Google services Gradle plugin id 'com.google.gms.google-services' // Add the Crashlytics Gradle plugin id 'com.google.firebase.crashlytics' }
ขั้นตอนที่ 3 : เพิ่มส่วนขยาย Crashlytics ให้กับงานสร้างของคุณ
ในไฟล์ Gradle ของ โมดูล (ระดับแอป) (โดยปกติคือ <project>/<app-module>/build.gradle.kts
หรือ <project>/<app-module>/build.gradle
) กำหนดค่าส่วนขยาย Crashlytics
Kotlin
import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension // ... android { // ... buildTypes { getByName("release") { // Add this extension configure<CrashlyticsExtension> { // Enable processing and uploading of native symbols to Firebase 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 } } } }
Groovy
// ... android { // ... buildTypes { release { // Add this extension firebaseCrashlytics { // Enable processing and uploading of native symbols to Firebase 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 } } } }
ขั้นตอนที่ 4 : ตั้งค่าการอัพโหลดสัญลักษณ์เนทีฟโดยอัตโนมัติ
Crashlytics จำเป็นต้องทราบเกี่ยวกับสัญลักษณ์ในไบนารีดั้งเดิมของคุณเพื่อสร้างการติดตามสแต็กที่อ่านได้จากการขัดข้องของ NDK ปลั๊กอิน Crashlytics Gradle มีงาน uploadCrashlyticsSymbolFile BUILD_VARIANT
เพื่อทำให้กระบวนการนี้เป็นแบบอัตโนมัติ
เพื่อให้คุณสามารถเข้าถึงงานสำหรับการอัปโหลดสัญลักษณ์อัตโนมัติได้ ตรวจสอบให้แน่ใจว่า
nativeSymbolUploadEnabled
ได้รับการตั้งค่าเป็นtrue
ในไฟล์ Gradle ของโมดูล (ระดับแอป)เพื่อให้ชื่อเมธอดปรากฏในการติดตามสแต็กของคุณ คุณต้องเรียกใช้งาน
uploadCrashlyticsSymbolFile BUILD_VARIANT
อย่างชัดเจนหลังจากแต่ละบิลด์ของไลบรารี NDK ของคุณ ตัวอย่างเช่น:>./gradlew app:assembleBUILD_VARIANT\ app:uploadCrashlyticsSymbolFileBUILD_VARIANT
ทั้ง Crashlytics SDK สำหรับ NDK และปลั๊กอิน Crashlytics Gradle ขึ้นอยู่กับการมีอยู่ของรหัสบิวด์ GNU ภายในออบเจ็กต์ที่แชร์แบบเนทีฟ
คุณสามารถตรวจสอบการมีอยู่ของ ID นี้ได้โดยเรียกใช้
readelf -n
ในแต่ละไบนารี หากไม่มี ID บิลด์ ให้เพิ่ม-Wl,--build-id
ไปยังแฟล็กของระบบ build ของคุณเพื่อแก้ไขปัญหา
ขั้นตอนที่ 5 : บังคับให้การทดสอบขัดข้องเพื่อตั้งค่าให้เสร็จสิ้น
หากต้องการตั้งค่า Crashlytics ให้เสร็จสิ้นและดูข้อมูลเริ่มต้นในหน้าแดชบอร์ด Crashlytics ของคอนโซล Firebase คุณจะต้องบังคับการทดสอบข้อขัดข้อง
เพิ่มโค้ดลงในแอปที่คุณสามารถใช้เพื่อบังคับการทดสอบข้อขัดข้อง
คุณสามารถใช้โค้ดต่อไปนี้ใน
MainActivity
ของแอปเพื่อเพิ่มปุ่มลงในแอปที่เมื่อกดแล้วจะทำให้แอปขัดข้อง ปุ่มนี้มีป้ายกำกับว่า "ทดสอบความผิดพลาด"Kotlin+KTX
val crashButton = Button(this) crashButton.text = "Test Crash" crashButton.setOnClickListener { throw RuntimeException("Test Crash") // Force a crash } addContentView(crashButton, ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT))
Java
Button crashButton = new Button(this); crashButton.setText("Test Crash"); crashButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { throw new RuntimeException("Test Crash"); // Force a crash } }); addContentView(crashButton, new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
สร้างและรันแอปของคุณ
บังคับให้ทดสอบข้อขัดข้องเพื่อส่งรายงานข้อขัดข้องแรกของแอป:
เปิดแอปของคุณจากอุปกรณ์ทดสอบหรือโปรแกรมจำลอง
ในแอปของคุณ ให้กดปุ่ม "ทดสอบข้อขัดข้อง" ที่คุณเพิ่มโดยใช้โค้ดด้านบน
หลังจากที่แอปของคุณขัดข้อง ให้รีสตาร์ทเพื่อให้แอปสามารถส่งรายงานข้อขัดข้องไปยัง Firebase ได้
ไปที่ แดชบอร์ด Crashlytics ของคอนโซล Firebase เพื่อดูการทดสอบข้อขัดข้อง
หากคุณรีเฟรชคอนโซลแล้ว แต่ยังไม่เห็นการทดสอบข้อขัดข้องหลังจากผ่านไปห้านาที ให้เปิดใช้งานการบันทึกการแก้ไขข้อบกพร่อง เพื่อดูว่าแอปของคุณส่งรายงานข้อขัดข้องหรือไม่
แค่นั้นแหละ! ขณะนี้ Crashlytics กำลังตรวจสอบแอปของคุณเพื่อหาข้อขัดข้อง และคุณจะดูและตรวจสอบรายงานข้อขัดข้องและสถิติได้ในหน้าแดชบอร์ด Crashlytics
ขั้นตอนถัดไป
(แนะนำ) รับความช่วยเหลือในการแก้ไขข้อขัดข้องที่เกิดจากข้อผิดพลาดของหน่วยความจำภายในโดย การรวบรวมรายงาน GWP-ASan ข้อผิดพลาดเกี่ยวกับหน่วยความจำเหล่านี้อาจเชื่อมโยงกับความเสียหายของหน่วยความจำภายในแอปของคุณ ซึ่งเป็นสาเหตุหลักของช่องโหว่ด้านความปลอดภัยของแอป หากต้องการใช้ประโยชน์จากฟีเจอร์การแก้ไขข้อบกพร่องนี้ โปรดตรวจสอบว่าแอปของคุณ เปิดใช้ GWP-ASan อย่างชัดเจน และใช้ Crashlytics SDK ล่าสุดสำหรับ NDK (v18.3.6+ หรือ Firebase BoM v31.3.0+)
ปรับแต่งการตั้งค่ารายงานข้อขัดข้องของคุณ โดยเพิ่มการรายงานที่เลือก บันทึก คีย์ และการติดตามข้อผิดพลาดที่ไม่ร้ายแรง
ผสานรวมกับ Google Play เพื่อให้คุณสามารถกรองรายงานข้อขัดข้องของแอป Android ตามแทร็ก Google Play ได้โดยตรงในแดชบอร์ด Crashlytics วิธีนี้ช่วยให้คุณมุ่งความสนใจไปที่แดชบอร์ดของคุณไปที่บิวด์เฉพาะได้ดีขึ้น
การแก้ไขปัญหา
หากคุณเห็นสแต็กเทรซที่แตกต่างกันในคอนโซล Firebase และใน logcat โปรดดู คำแนะนำในการแก้ปัญหา
ตัวเลือกอื่นสำหรับการอัพโหลดสัญลักษณ์
ขั้นตอนการทำงานหลักในหน้านี้ใช้ได้กับรุ่น Gradle มาตรฐาน อย่างไรก็ตาม บางแอปใช้การกำหนดค่าหรือเครื่องมือที่แตกต่างกัน (เช่น กระบวนการสร้างอื่นที่ไม่ใช่ Gradle) ในสถานการณ์เหล่านี้ ตัวเลือกต่อไปนี้อาจเป็นประโยชน์ในการอัพโหลดสัญลักษณ์ได้สำเร็จ
ตัวเลือก : อัปโหลดสัญลักษณ์สำหรับโมดูลไลบรารีและการขึ้นต่อกันภายนอก
ตัวเลือกนี้จะมีประโยชน์ในสถานการณ์ต่อไปนี้:
- หากคุณใช้กระบวนการสร้าง NDK แบบกำหนดเองภายใน Gradle
- หากไลบรารีดั้งเดิมของคุณถูกสร้างขึ้นในไลบรารี/โมดูลคุณสมบัติหรือจัดทำโดยบุคคลที่สาม
- หาก งานอัพโหลดสัญลักษณ์อัตโนมัติ ล้มเหลวหรือคุณพบข้อขัดข้องที่ไม่ได้แสดงสัญลักษณ์ในแดชบอร์ด
งานอัปโหลดสัญลักษณ์ Crashlytics มาตรฐานจะถือว่าคุณกำลังสร้างไลบรารีดั้งเดิมของคุณโดยเป็นส่วนหนึ่งของรุ่น Gradle ของโมดูลแอป โดยใช้เครื่องมือสร้าง NDK มาตรฐาน เช่น CMake
อย่างไรก็ตาม หากคุณใช้กระบวนการสร้าง NDK แบบกำหนดเองภายใน Gradle หรือไลบรารีดั้งเดิมของคุณถูกสร้างขึ้นในไลบรารี/โมดูลคุณสมบัติหรือจัดทำโดยบุคคลที่สาม คุณอาจต้องระบุเส้นทางไปยังไลบรารีที่ยังไม่ได้แยกอย่างชัดเจน เพื่อให้บรรลุเป้าหมายนี้ คุณสามารถเพิ่มคุณสมบัติ unstrippedNativeLibsDir
ภายในส่วนขยาย Crashlytics ในไฟล์ Gradle build ของคุณ
ตรวจสอบให้แน่ใจว่าคุณได้ทำงานเริ่มต้นต่อไปนี้จากเวิร์กโฟลว์หลักก่อนหน้านี้ในหน้านี้แล้ว:
เพื่อให้งานอัปโหลดสัญลักษณ์อัตโนมัติสามารถค้นหาข้อมูลสัญลักษณ์ของคุณได้ ให้เพิ่มสิ่งต่อไปนี้ลงในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติจะเป็น
<project>/<app-module>/build.gradle.kts
หรือ<project>/<app-module>/build.gradle
):Kotlin
import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension // ... android { // ... buildTypes { release { configure<CrashlyticsExtension> { nativeSymbolUploadEnabled = true unstrippedNativeLibsDir = file("PATH/TO/UNSTRIPPED/DIRECTORY") } } } }
Groovy
// ... android { // ... buildTypes { release { firebaseCrashlytics { nativeSymbolUploadEnabled true unstrippedNativeLibsDir file("PATH/TO/UNSTRIPPED/DIRECTORY") } } } }
ปลั๊กอิน Crashlytics จะค้นหาไลบรารีดั้งเดิมที่มีนามสกุล
.so
ในไดเร็กทอรีที่ระบุแบบวนซ้ำ จากนั้น Crashlytics จะแยกสัญลักษณ์การแก้ไขข้อบกพร่องออกจากไลบรารีดังกล่าวทั้งหมดแล้วอัปโหลดไปยังเซิร์ฟเวอร์ Firebaseนี่คือสิ่งที่คุณสามารถระบุในคุณสมบัติ
unstrippedNativeLibsDir
:อาร์กิวเมนต์ใด ๆ ที่อนุญาตสำหรับ
org.gradle.api.Project#files(Object...)
รวมถึง:java.lang.String
,java.io.File
หรือorg.gradle.api.file.FileCollection
หลายไดเร็กทอรีสำหรับบิวด์รสชาติเดียวโดยการจัดเตรียมรายการหรืออินสแตนซ์
FileCollection
สุดท้าย บังคับให้ทดสอบข้อขัดข้อง เพื่อตั้งค่า Crashlytics ให้เสร็จสิ้น และดูข้อมูลเริ่มต้นในแดชบอร์ด Crashlytics ของคอนโซล Firebase
ตัวเลือก : อัปโหลดสัญลักษณ์สำหรับบิลด์ที่ไม่ใช่ Gradle หรือไลบรารีเนทีฟที่ไม่ได้แยกส่วนที่ไม่สามารถเข้าถึงได้
ตัวเลือกนี้จะมีประโยชน์ในสถานการณ์ต่อไปนี้:
หากคุณใช้กระบวนการสร้างอื่นที่ไม่ใช่ Gradle
หากมีการจัดเตรียมไลบรารีเนทิฟที่ไม่ได้แยกออกมาให้กับคุณในลักษณะที่ไม่สามารถเข้าถึงได้ในระหว่างการสร้าง Gradle
ตัวเลือกนี้กำหนดให้คุณต้องเรียกใช้คำสั่ง Firebase CLI เมื่อคุณสร้างรุ่น release หรือรุ่นใดๆ ที่คุณต้องการดูการติดตามสแต็กสัญลักษณ์ในคอนโซล Firebase
ตรวจสอบให้แน่ใจว่าคุณได้ทำงานเริ่มต้นต่อไปนี้จากเวิร์กโฟลว์หลักก่อนหน้านี้ในหน้านี้แล้ว:
โปรดทราบว่าด้วยตัวเลือกนี้ คุณไม่จำเป็นต้องเพิ่มส่วนขยาย
firebaseCrashlytics
หรือตั้งค่าการอัปโหลดสัญลักษณ์อัตโนมัติ เนื่องจากคุณจะใช้ Firebase CLI แทน (ขั้นตอนถัดไปด้านล่าง) เพื่อสร้างและอัปโหลดไฟล์สัญลักษณ์ของคุณตั้งค่าสภาพแวดล้อมและโปรเจ็กต์ของคุณสำหรับการอัพโหลดสัญลักษณ์:
ทำตามคำแนะนำเพื่อ ติดตั้ง Firebase CLI
หากคุณได้ติดตั้ง CLI แล้ว อย่าลืม อัปเดตเป็นเวอร์ชันล่าสุด
(สำหรับแอปที่ใช้ Android API ระดับ 30+ เท่านั้น) อัปเดตเทมเพลต
AndroidManifest.xml
ของแอปของคุณเพื่อปิดใช้งานการแท็กพอยน์เตอร์:ทำเครื่องหมายในช่องสำหรับ การตั้งค่าเครื่องเล่น Android > การตั้งค่าการเผยแพร่ > สร้าง > ไฟล์ Manifest หลักที่กำหนดเอง
เปิดเทมเพลตรายการที่อยู่ใน
Assets/Plugins/Android/AndroidManifest.xml
เพิ่มแอตทริบิวต์ต่อไปนี้ให้กับแท็กแอปพลิเคชัน:
<application android:allowNativeHeapPointerTagging="false" ... />
สร้างโครงการของคุณ
อัปโหลดข้อมูลสัญลักษณ์ของคุณ
เมื่อบิลด์ของคุณเสร็จสิ้น ให้สร้างไฟล์สัญลักษณ์ที่เข้ากันได้กับ Crashlytics และอัปโหลดไปยังเซิร์ฟเวอร์ Firebase โดยเรียกใช้คำสั่ง Firebase CLI ต่อไปนี้:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
FIREBASE_APP_ID : รหัสแอป Firebase Android ของคุณ (ไม่ใช่ชื่อแพ็คเกจของคุณ)
ตัวอย่างรหัสแอป Android ของ Firebase:1:567383003300:android:17104a2ced0c9b9b
ต่อไปนี้เป็นสองวิธีในการค้นหารหัสแอป Firebase ของคุณ:
ในไฟล์
google-services.json
รหัสแอปของคุณคือค่าmobilesdk_app_id
หรือในคอนโซล Firebase ให้ไปที่ การตั้งค่าโครงการ เลื่อนลงไปที่การ์ด แอปของคุณ จากนั้นคลิกที่แอป Firebase ที่ต้องการเพื่อค้นหารหัสแอป
PATH/TO/SYMBOLS : เส้นทางไปยังไฟล์สัญลักษณ์ที่สร้างโดย CLI
ส่งออกไปยังโครงการ Android Studio - PATH/TO/SYMBOLS สามารถเป็นไดเร็กทอรีใดก็ได้ Firebase CLI จะค้นหาไดเร็กทอรีที่ระบุซ้ำสำหรับไลบรารีเนทิฟที่มีนามสกุล .
.so
สร้าง APK โดยตรงจากภายใน Unity — PATH/TO/SYMBOLS คือเส้นทางของไฟล์สัญลักษณ์ซิปที่สร้างขึ้นในไดเร็กทอรีรากของโปรเจ็กต์เมื่อการสร้างของคุณเสร็จสิ้น (เช่น:
myproject/myapp-1.0-v100.symbols.zip
.zip )
ดูตัวเลือกขั้นสูงสำหรับการใช้คำสั่ง Firebase CLI สำหรับการสร้างและอัปโหลดไฟล์สัญลักษณ์
ธง คำอธิบาย --generator=csym
ใช้ตัวสร้างไฟล์สัญลักษณ์ cSYM แบบเดิมแทนตัวสร้างไฟล์ Breakpad เริ่มต้น
ไม่แนะนำให้ใช้ เราขอแนะนำให้ใช้ตัวสร้างไฟล์สัญลักษณ์ Breakpad เริ่มต้น
--generator=breakpad
ใช้ตัวสร้างไฟล์สัญลักษณ์ Breakpad
โปรดทราบว่าค่าเริ่มต้นสำหรับการสร้างไฟล์สัญลักษณ์คือ Breakpad ใช้แฟล็กนี้เฉพาะเมื่อคุณได้เพิ่มแล้ว
symbolGenerator { csym() }
ในการกำหนดค่าบิลด์ของคุณและคุณต้องการแทนที่เพื่อใช้ Breakpad แทน--dry-run
สร้างไฟล์สัญลักษณ์แต่ไม่ได้อัปโหลด
แฟล็กนี้มีประโยชน์หากคุณต้องการตรวจสอบเนื้อหาของไฟล์ที่ถูกส่ง
--debug
ให้ข้อมูลการดีบักเพิ่มเติม สุดท้าย บังคับให้ทดสอบข้อขัดข้อง เพื่อตั้งค่า Crashlytics ให้เสร็จสิ้น และดูข้อมูลเริ่มต้นในแดชบอร์ด Crashlytics ของคอนโซล Firebase
หลังจากที่คุณสร้างแอปโดยเป็นส่วนหนึ่งของการบังคับให้เกิดข้อขัดข้อง ตรวจสอบให้แน่ใจว่าได้เรียกใช้คำสั่ง Firebase CLI
crashlytics:symbols:upload
เพื่ออัปโหลดไฟล์สัญลักษณ์ของคุณ