Theo mặc định, các thư viện mã gốc sẽ bị loại bỏ trong các bản phát hành của ứng dụng. Việc loại bỏ này bao gồm việc xoá bảng ký hiệu và thông tin gỡ lỗi có trong mọi thư viện gốc mà ứng dụng của bạn sử dụng. Việc loại bỏ các thư viện mã gốc giúp tiết kiệm đáng kể dung lượng; tuy nhiên, bạn không thể chẩn đoán sự cố trên Google Play Console do thiếu thông tin (chẳng hạn như tên lớp và tên hàm). Để gỡ lỗi sự cố, bạn phải thêm một tệp biểu tượng gỡ lỗi vào ứng dụng trong Play Console.
Tải tệp biểu tượng lên
Google Play Console báo cáo các trục trặc với mã gốc trong Android vitals. Qua vài bước, bạn có thể tạo và tải một tệp biểu tượng gỡ lỗi gốc lên cho ứng dụng. Tệp này sẽ kích hoạt dấu vết ngăn xếp sự cố gốc tượng trưng (bao gồm tên lớp và tên hàm) trong Android vitals, cho phép bạn gỡ lỗi ứng dụng trong bản phát hành chính thức. Các bước này sẽ khác nhau tuỳ thuộc vào phiên bản của trình bổ trợ Android cho Gradle được dùng trong dự án và việc bạn có đang dùng Android App Bundle (nên dùng) hay APK hay không.
Trình bổ trợ Android cho Gradle phiên bản 4.1 trở lên
Nếu dự án của bạn tạo một Android App Bundle (AAB), thì bạn có thể định cấu hình bản dựng để tự động đưa tệp biểu tượng gỡ lỗi gốc vào AAB. Nhờ đó, tệp này sẽ được tải lên Play Console khi bạn xuất bản ứng dụng. Để đưa tệp này vào các bản dựng phát hành, hãy thêm nội dung sau vào tệp build.gradle.kts của ứng dụng:
android.buildTypes.release.ndk.debugSymbolLevel = { SYMBOL_TABLE | FULL }
Chọn cấp biểu tượng gỡ lỗi từ tuỳ chọn sau:
- Sử dụng
SYMBOL_TABLEđể lấy tên hàm trong dấu vết ngăn xếp tượng trưng của Play Console. Cấp độ này hỗ trợ cấu trúc tombstones. - Sử dụng
FULLđể lấy tên hàm, tệp và số dòng trong dấu vết ngăn xếp tượng trưng của Play Console.
Nếu dự án của bạn tạo một APK, hãy sử dụng chế độ cài đặt android.buildTypes.release.ndk.debugSymbolLevel được hiển thị trước đó để tạo tệp biểu tượng gỡ lỗi gốc riêng biệt. Tải tệp biểu tượng gỡ lỗi gốc lên Google Play Console theo cách thủ công (quy trình này tương tự như quy trình tải tệp ánh xạ lên để gỡ rối mã nguồn cho dấu vết ngăn xếp).
Là một phần trong quy trình xây dựng, trình bổ trợ Android cho Gradle sẽ cho ra tệp này tại vị trí trong dự án như dưới đây:
app/build/outputs/native-debug-symbols/<var>variant-name</var>/native-debug-symbols.zip
Nếu các phần phụ thuộc của bạn chứa thư viện gốc, thì thông tin gỡ lỗi có thể bị loại bỏ để giảm kích thước. Bạn có thể xác minh điều này bằng cách chạy bản dựng với cấp độ nhật ký info và đặt debugSymbolLevel = { SYMBOL_TABLE | FULL }.
Sau đó, hãy tìm dòng sau trong kết quả bản dựng:
Unable to extract native debug metadata from ... because the native debug metadata has already been stripped.
Trình bổ trợ Android cho Gradle phiên bản 4.0 trở về trước (và các hệ thống xây dựng khác)
Là một phần trong quy trình xây dựng, trình bổ trợ Android cho Gradle sẽ lưu giữ một bản sao của các thư viện chứa biểu tượng gỡ lỗi trong thư mục của dự án. Cấu trúc thư mục này tương tự như sau:
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
Nén nội dung của thư mục này:
cd app/build/intermediates/cmake/universal/release/obj zip -r symbols.zip .Tải tệp
symbols.ziplên Google Play Console theo cách thủ công.