前言
記一次在開發過程中找到Flutter符號表的過程。由於Flutter準備上線後需要將Flutter符號表打進崩潰系統,供崩潰系統查詢。即使是發佈到線上的崩潰,也能在崩潰系統中掃描出來。這裏只是記錄將對應Flutter版本號找到對應帶符號表的過程,我們的工作就是將符號表交給負責崩潰系統的人即可。
1、flutter版本
由於我們開發的版本是最新的stable版本,需要將本地版本切換到stable版本,在命令行執行
flutter channel stable
由於我們開發是最新的stable版本,需要更新到flutter最新版本,在命令行執行
flutter upgrade
查看flutter版本
flutter --version
本機的flutter版本
Flutter 1.5.4-hotfix.2 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 7a4c33425d (5 weeks ago) • 2019-04-29 11:05:24 -0700
Engine • revision 52c7a1e849
Tools • Dart 2.3.0 (build 2.3.0-dev.0.5 a1668566e5)
2、找到符號表
- 在GitHub上找到flutter項目的Release版本,找到我們對應的版本,鏈接在此,下載source
- 下載完後解壓,在
/bin/internal/engine.version
中查看當前版本對應的engine版本,如52c7a1e849a170be4b2b2fe34142ca2c0a6fea1f
- 在flutter倉庫中搜索對應的版本,找到對應的文件夾,裏面就是我們各種cpu架構的符號表,取下來交給崩潰系統負責人即可
3、其他符號表
但有些Flutter的開發是自定義Engine的,這個時候就需要gradle將ndk生成的so文件,放到構建系統的符號表指定目錄中
task collectSymbolSo(type: Tar) {
destinationDir = file("${rootDir}/target/artifacts")
baseName = 'hensen'
compression = Compression.GZIP
extension = 'tar.gz'
from(new File(buildDir, 'intermediates/ndkBuild/release/obj/local'))
include("**/*.so")
exclude("**/objs")
}
tasks.whenTaskAdded { task ->
if (task.name == 'assembleRelease') {
assembleRelease.finalizedBy collectSymbolSo
}
}