前言
记一次在开发过程中找到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
}
}