[英]How to include debug symbols for a pre-built native library inside an Android App Bundle?
將應用程序上傳到使用本機庫的 Play 商店時,還需要上傳本機調試符號以獲取有用的崩潰/ANR 信息。
如果您上傳時沒有符號,您會收到以下警告:“此 App Bundle 包含本機代碼,並且您尚未上傳調試符號。我們建議您上傳符號文件,以使您的崩潰和 ANR 更易於分析和調試。”
過去在將應用程序上傳為.apk
文件時,需要手動上傳此類調試信息。 現在使用.aab
如果本機庫是通過 android studio 構建的,則可以設置android.defaultConfig.ndk.debugSymbolLevel = 'FULL'
,此時當您構建.aab
時,它將自動包含調試信息,您上傳此單文件,一切都已完成/工作。
然而,在 android studio 中構建庫並不總是可能/理想/必要的。 有時有一些原因需要在外部預先構建庫並僅由 android studio 使用,而不是由它構建; Android Studio 通過此處描述的目錄結構支持這一點https://developer.android.com/studio/projects/gradle-external-native-builds#jniLibs簡而言之,您只需將庫復制到正確的src/main/jniLibs/{ABI}
路徑,它被拾取並成為捆綁包的一部分。
.aab
,其中包含 Play 商店可以理解的調試信息,因此您無需手動上傳。.aab
中包含它們的調試信息。 即使在邏輯上應該可以做到這一點。 我已經搜索了我認為的所有地方,但找不到任何人甚至真的在談論這個,您如何/在哪里放置相應的調試信息,以便也可以將其作為.aab
的一部分包含在內? 是否有單獨的路徑,它們是否只需要特定的文件擴展名,是否需要告訴 gradle 以某種方式處理它們? 這真的不可能嗎?
我嘗試過的事情:
.so.dbg
的文件,並將它們放在 .so 文件旁邊 - 它們不包含在.aab
中.aab
后手動壓縮和上傳符號 - 這似乎有效但不一樣將它們放在.aab
中一樣方便經過更多挖掘后,我發現負責此任務的任務是“ExtractNativeDebugMetadataTask”,可以通過它來定制/更改一些工作以在此處執行自定義操作。
然而,這最終是不必要的,因為在深入研究時我發現它實際上已經有效。 至少到目前為止最新的 gradle 版本(不確定過去)。 它只是由於某些 NDK 路徑混淆而失敗,這不會導致包構建的構建/創建失敗,但只會記錄一條容易錯過的信息消息。
最終,完成這項工作所需要做的就是:
-g
-g3
或類似工具構建您的外部.so
文件jniLibs
目錄結構中android{ ndk { debugSymbolLevel 'FULL' } ndkPath "$projectDir/path/to/NDK" }
生成的.aab
將在正確的位置包含剝離的.so
文件和拆分調試的.so.dbg
文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.