Próbuję dodać obsługę Crashlytics do mojego projektu Android, który używa NDK i gradacja CMake. Oznacza to, że potrzebuję symboli dla moich wspólnych projektów. Więc jeśli chcę tworzyć symbole kompilacji uwalniania Zadzwonię gradlew crashlyticsUploadSymbolsRelease
Crashlytics NDK symbol budynku z linii poleceń
Oficjalny dokument w https://docs.fabric.io/android/crashlytics/ndk.html mówi, że Proces generacji symbol i przesłać zakłada standardową strukturę projektu: src/main/obj debugowania dla plików binarnych, a src/main/libs dla plików binarnych wydań produkowanych przez ndk-build.
W pliku Gradle oznacza to nowy blok, który jest jak następuje:
crashlytics {
enableNdk true
androidNdkOut 'src/main/obj'
androidNdkLibsOut 'src/main/libs'
}
Ponieważ używam Gradle integrację CUpewnij budować moje rodzimych bibliotekami, ścieżki domyślne oczywiście nie działają. Moje natywne biblioteki w trybie zwolnienia są wbudowane w katalog build/intermediates/cmake/release/obj
, aw trybie debugowania przechodzą do katalogu build/intermediates/cmake/debug/obj
.
Od prób i błędów doszedłem do wniosku, że jeśli chcę, aby moja kompilacja wydania zadziałała, będę musiał umieścić ścieżkę do bibliotek rodzimych w trybie zwolnienia w obie linie, jak pokazano poniżej.
crashlytics {
enableNdk true
androidNdkOut 'build/intermediates/cmake/release/obj'
androidNdkLibsOut 'build/intermediates/cmake/release/obj'
}
ja po prostu naprawdę nie rozumieją różnicy między androidNdkOut
i androidNdkLibsOut
zmiennych, bo przynajmniej w moim scenariuszu wskazują one na tym samym katalogu. Na szczęście nie stanowi to dla mnie problemu, ponieważ potrzebuję Crashlytics do pracy z plikami binarnymi.
Więc moje pytania to:
1) Jaka jest naprawdę różnica między androidNdkOut
i androidNdkLibsOut
? Dlaczego nie mogę umieścić ścieżki do plików binarnych debugowania w jednym i ścieżki do wydania plików binarnych innym? Konkretny przykład byłby miły, oprócz wyjaśnień.
2) Jak powinienem zmodyfikować mój plik gradle, jeśli pewnego dnia chcę dołączyć symbole do moich bibliotek debugowania? Co oznacza, że polecenie gradlew crashlyticsUploadSymbolsRelease
oraz gradlew crashlyticsUploadSymbolsDebug
zadziała?
Istnieje dyskusja na ten temat w wątkach Crashlytics NDK symbols and Gradle tasks i Crashlytics NDK multi androidNdkOut path support, ale tak naprawdę nie odpowiadają na te dwa pytania.
Czy otrzymałeś numery linii? Gdzie znalazłeś rozpakowane pliki binarne? Te ścieżki, które podałeś, zawierają tylko obnażone. Tak, nie? – urSus