獨立部落格 ZYF.IM
在上傳 App 到 App Store 後收到郵件,有 issues Too many symbol files。在之前看到 Your delivery was successful,此 issues 不影響釋出,所以一直擱置了。
今天決定徹底處理下。
背景
先說 *.symbols
這檔案是幹嘛的,我現在(2018-10)對此的理解:
- symbols 為符號表檔案
- 符號表是記憶體地址與函式名、檔名、行號的對映表
<起始地址> <結束地址> <函式> [<檔名:行號>]
為什麼要配置符號表?
為了能快速並準確地定位使用者 App 發生 Crash 的程式碼位置,使用符號表對 App 發生 Crash 的程式 堆疊 進行 解析 和 還原。
專案情況
再說下專案情況,因為數字都是用了的是 Int,為防止 32 位裝置發生越界情況(理由好像有點扯),所以專案端設定了裝置限制 arm64
,也就是 5s 之前的裝置不可以安裝。
因為使用了三方庫,但是三方庫是支援 32 位裝置的,所以生成了冗餘的 symbols 檔案。
查詢 symbols 檔案的生成情況:Xcode Window -> Organizer 選擇有問題的 archive,右擊選擇 Show in finder,命令列進入 *.app 中的 dSYMs 資料夾,執行 dwarfdump --uuid *
可以查詢到是否生成了多餘的檔案。
解決
在 Podfile
中:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
config.build_settings['ARCHS'] = 'arm64'
end
end
end
複製程式碼
檢查
在 info.plist
中:
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
複製程式碼
在 build Settings 搜尋 valid architecture
中,填寫 arm64
Reference: