當您的項目代碼需要做打包混淆時,需要上傳符號表,進行版本管理。本文介紹制作、上傳符號表文件的操作步驟。
前提條件
符號表格式
- Android符號表
xxx.zip |-- mapping.txt --存在多個mapping.txt文件時,需手動合并到一個文件中。 |-- libxx1.so --要求與發布的so文件同名。 |-- libxx2.so |-- armeabi-v7a |-- libxx3.so --多個架構時,需將文件放到對應的架構目錄中。 |-- x86 |-- libxx3.so --多個架構時,需將文件放到對應的架構目錄中。
- iOS符號表
xxx.zip |-- demo.ios.app.dSYM |--Contents |--Resources |--DWARF |--iOS --主應用符號,要求與xcode模塊同名,路徑無限制。 |-- sdk1 --sdk1符號,要求與xcode模塊同名,路徑無限制。 |-- sdk2 --sdk2符號,要求與xcode模塊同名,路徑無限制。
- 將編譯生成的.dSYM文件夾直接打包為.zip文件即可。
- 如果存在第三方庫,可將第三方庫與.dSYM文件夾一起打包,目錄層級無限制。
- 如果不存在.dSYM文件,可上傳未加密的ipa文件作為符號表。此方式可定位函數名,無法定位文件名及行號。
步驟一:制作符號表文件
制作Android符號表文件
制作iOS符號表文件
步驟二:上傳符號表文件
- 登錄日志服務控制臺。
- 在日志應用區域,單擊移動運維監控。
- 在應用列表中,單擊目標應用。
- 創建版本。
- 在左側導航欄中,單擊版本管理。
- 在版本管理頁簽中,單擊新建版本。
- 在新建版本對話框中,設置版本、子版本和版本說明,然后單擊確定。
- 上傳符號表。
常見問題
- 如何生成帶buildid的so文件?
檢查編譯參數,確定沒有
--build-id=none
,即表示生成帶buildid的so文件。如果沒有buildid,可以添加編譯參數ld_flags += -Wl,--build-id=sha1
。 - 如何檢查so文件是否帶buildid?
通過file命令檢查so文件是否帶buildid。
file libsls_producer.so
返回如下類似結果,表示so文件帶buildid。
libsls_producer.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=3c83e72280f649227f59eb9414f14cadb75de698, stripped
- 通過Xcode打包后沒有生成.dSYM文件,怎么處理?
請確認目標TARGETS中的Build Options配置是否正確。