Domyślnie w wersjach aplikacji przeznaczonych do publikacji usuwane są biblioteki kodu natywnego. Polega to na usunięciu tabeli symboli i informacji debugujących zawartych w dowolnych bibliotekach natywnych używanych przez aplikację. Usuwanie bibliotek kodu natywnego powoduje znaczne zmniejszenie rozmiaru, ale uniemożliwia diagnozowanie awarii w Konsoli Google Play z powodu braku informacji (np. nazw klas i funkcji). Aby debugować awarie, musisz dołączyć do aplikacji w Konsoli Play plik z symbolami debugowania.
Przesyłanie pliku z symbolami
Konsole Google Play zgłasza awarie natywnych aplikacji w sekcji Android Vitals. Wystarczy kilka kroków, aby wygenerować i przesłać plik z symbolami do debugowania kodu natywnego dla aplikacji. Ten plik umożliwia korzystanie z symbolizowanych ścieżek wyjątków kodu natywnego (które obejmują nazwy klas i funkcji) w Android Vitals, co ułatwia debugowanie aplikacji w produkcji. Te czynności różnią się w zależności od wersji wtyczki Androida do obsługi Gradle używanej w projekcie oraz od tego, czy używasz pakietu Android App Bundle (zalecane) czy pliku APK.
Wtyczka Androida do obsługi Gradle w wersji 4.1 lub nowszej
Jeśli w ramach projektu tworzysz pakiet Android App Bundle (AAB), możesz skonfigurować kompilację, aby automatycznie uwzględniała w nim plik z natywnymi symbolami debugowania. Dzięki temu plik zostanie przesłany do Konsoli Play podczas publikowania aplikacji. Aby uwzględnić ten plik w kompilacji wersji, dodaj do pliku build.gradle.kts
aplikacji te informacje:
android.buildTypes.release.ndk.debugSymbolLevel = { SYMBOL_TABLE | FULL }
Wybierz poziom symboli debugowania spośród tych opcji:
- Użyj
SYMBOL_TABLE
, aby uzyskać nazwy funkcji w symbolizowanych zrzutach stosu w Konsoli Play. Ten poziom obsługuje tombstones. - Użyj
FULL
, aby uzyskać nazwy funkcji, pliki i numery wierszy w symbolizowanych zrzutach stosu w Konsoli Play.
Jeśli w ramach projektu tworzysz plik APK, użyj ustawienia android.buildTypes.release.ndk.debugSymbolLevel
, aby niezależnie wygenerować plik z symbolami. Ręcznie prześlij do Konsoli Google Play plik z natywnymi symbolami debugowania (proces jest podobny do przesyłania pliku mapowania w celu odczytania zaciemnionego kodu w zrzutach stosu).
W ramach procesu kompilacji wtyczka Androida do obsługi Gradle generuje ten plik w następującej lokalizacji projektu:
app/build/outputs/native-debug-symbols/<var>variant-name</var>/native-debug-symbols.zip
Wtyczka Androida do obsługi Gradle w wersji 4.0 lub nowszej (i inne systemy kompilacji)
W ramach procesu kompilacji wtyczka Androida do obsługi Gradle przechowuje kopię niezmodyfikowanych bibliotek w katalogu projektu. Struktura katalogów jest podobna do tej:
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
Skompresuj zawartość tego katalogu:
cd app/build/intermediates/cmake/universal/release/obj zip -r symbols.zip .
Ręcznie prześlij plik
symbols.zip
do Konsoli Google Play.