我有一个针对Android的Flutter应用程序。我曾经使用以下命令构建应用程序捆绑包:
flutter build appbundle --release
然后,我会从buildappintermediatesmerged_native_libsreleaseoutlib
文件夹中压缩并上传本机调试符号。
我正在尝试使用模糊处理,所以我切换到了这个命令:
flutter build appbundle --release --obfuscate --split-debug-info=./build/symbols
这是有效的,它在我的";构建/符号";文件夹:
- app.android-arm.symbols
- app.android-arm64.symbol
- app.android-x64.symbol
当我将这三个文件压缩到symbols.zip
文件中并使用upload native debug symbols
到Play Store时,它们会被拒绝,并出现以下错误:
本机调试符号包含一个意外文件:app.android-x64.symbol。app.android-arm64.symbol。app.android-arm.symbols.
我仍然可以像以前一样从buildappintermediatesmerged_native_libsreleaseoutlib
上传符号。
有人能解释一下这两组符号文件之间的区别吗?我应该在商店提交中使用什么?
我一直在研究这些主题,我发现了不同之处。
颤振应用程序中有两种类型的模糊处理:
- 本地库(java、kotlin等(代码
- dart库(所有dart代码(
当您将buildappintermediatesmerged_native_libsreleaseoutlib
上传到播放控制台时,它用于消除本机库的模糊
此zip也称为本机调试符号。
因此,当本机代码发生崩溃时,这些符号将被Play控制台用于消除Stack-trace
的模糊。
另一方面,由flutter命令创建的*.symbols
文件(在您的案例中是build/symbols
文件夹中的文件(是用来消除dart代码模糊的调试符号。
它们将用于消除与dart代码崩溃相关的Stack-trace
的模糊。你会在Firebase Crashlytics
中看到这些崩溃。
要将这些符号上传到Firebase,请使用以下命令:
firebase crashlytics:symbols:upload --app=APP_ID PATH/TO/symbols
在您的情况下,PATH/TO/symbols
将是build/symbols