使用 Flutter 和本机混淆将哪些符号上传到 Play 商店?

Bug*_*lla 11 android flutter google-play-console android-obfuscation

对于 Android Flutter 应用程序,您可以混淆 Dart 代码和本机 Android 代码。

在构建 aab、apk、ipa 或 ios 时使用标志混淆 Dart 代码--obfuscate --split-debug-info=/path/to/place/symbols

您可以在应用程序级别的 build.gradle 中混淆 Android 本机应用程序

buildTypes {
        release {
            shrinkResources true 
            minifyEnabled true
        } 
Run Code Online (Sandbox Code Playgroud)

现在,我的疑问是我必须上传哪些符号到 Google Play?

  1. Dart 混淆生成文件:
  • app.android-x64.符号
  • 应用程序.android-arm64.符号
  • 应用程序.android-arm.符号

但除了象征您下载到计算机的崩溃报告文件之外,没有关于如何使用它们的信息

  1. 根据skyllet 的回答,您应该压缩文件夹(每个文件夹都包含 libapp.so 和 libflutter.so 存档):
  • ARM64-V8A
  • armeabi-v7a
  • x86_64

位于 build\app\intermediates\merged_native_libs\release\out\lib 到 *.zip 并将该 zip 上传到 Google Play

  1. 您还可以按照Taras Svidnytskyy 的回答,通过下载 NDK 并配置 build.gradle (应用程序)将本机符号捆绑在 aab 中
android.*.ndkVersion = "23.1.7779620" | 'your ndk version'
android.*.ndk.debugSymbolLevel = 'FULL' | 'TABLE' // Table for reduced symbols
Run Code Online (Sandbox Code Playgroud)

现在,使用 3),与 AAB 捆绑在一起的压缩本机符号的大小(不幸的是我无法下载进行比较)在 Google Play 控制台中为 5kB。

使用2),具有3个文件夹的压缩zip的大小是12MB。

我没有找到如何上传 1) 中的符号,但它们的重量约为 1MB(压缩后)

所以我的理解是2和3应该上传相同的符号,但比较档案的大小,情况似乎并非如此。

上传符号图的正确方法是什么?

小智 1

我认为你必须将 build\app\outputs\mapping\release\mapping.txt 上传到 Google Play Console