Playstore error: App Bundle contains native code, and you've not uploaded debug symbols

Playstore error: App Bundle contains native code, and you've not uploaded debug symbols

当我想向 Playstore 发布新的 flutter 应用程序包时。我收到此错误: “此 App Bundle 包含本机代码,您尚未上传调试符号。我们建议您上传一个符号文件,以便更轻松地分析和调试您的崩溃和 ANR。” 我找不到任何方法来解决这个问题。我是 flutter 的新手,正在发布应用程序,有点绝望...... 任何帮助都会很棒。

当我按照 https://developer.android.com/studio/preview/features#native-crash-symbolization 中的建议将“android.defaultConfig.ndk.debugSymbolLevel = 'FULL'”(第 1 行)添加到 app/build.gradle 时。我在 Android 工作室终端中收到此错误。我使用这个命令“flutter build appbundle”。

终端错误: 失败:构建失败,出现异常。

Could not get unknown property 'android' for project ':app' of type org.gradle.api.Project.

3 秒内构建失败 运行宁Gradle任务'bundleRelease'... 运行ning Gradle 任务 'bundleRelease'... 完成 4,3s Gradle 任务 bundleRelease 失败,退出代码为 1

在上传调试符号文件之前,您必须使用 Android Gradle 插件版本 4.1 或更高版本。

看起来它只能与 Android Studio 4.1 一起使用,因为我现在只能自动获得 Gradle 4.0.0。

所以我建议您使用 return 经典 Play 控制台,它会让您通过:)

更新: 因此,只需使用更新的 Gradle 并立即将 NDK 调试符号添加到构建中

根据 Play 管理中心上的以下消息,Shakle 给出的答案将无用。

The old version of Play Console will be discontinued from November 2, 2020 You’re already using the new Play Console, so you don’t need to do anything. A few features are going away if you want to check them one last time.

这只是一个警告,没有别的。继续吧。

如果您不想要任何警告,请转至此 link 并按照以下步骤操作:

https://support.google.com/googleplay/android-developer/answer/9848633?hl=en

您可以按原样使用 Play 商店 的新版本。

Could not get unknown property 'android' for project ':app' of type org.gradle.api.Project.

您必须将其添加到 gradle.properties 而不是 build.gradle

我有完全相同的问题。

可能的解决方案:

  1. 使用 Google 经典 Play 控制台
  2. Gradle 4.1 现已与 Android Studio 4.1
  3. 一起发布

如果谈论 Flutter,Flutter 团队似乎需要为 NDK 更改一些源文件,因为它看不到从哪里生成调试符号。

这是一个问题线程:https://github.com/flutter/flutter/issues/60240

设置步骤是这样的:

  • Pre-condition:安装 Android studio 4.1+ 和 Gradle 4.1+
  1. 在 SDK 管理器中安装 NDK(并行)

  2. 在 local.properties 中写入 NDK 的路径

  3. 加入app/build.gradle(最后一行)android.buildTypes.release.ndk.debugSymbolLevel = 'FULL'

如果要解决这个警告错误: 此 App Bundle 包含本机代码,并且您尚未上传调试符号。我们建议您上传一个符号文件,以便更轻松地分析和调试您的崩溃和 ANR。还要确保安装 CMake

如果您的 gradle 版本高于 4.0,就会发生这种情况 将此代码放入您的 build.gradle 文件

android {
compileSdkVersion 28
defaultConfig {
    applicationId 'com.example.myproject'
    minSdkVersion 21
    targetSdkVersion 28
    versionCode 1
    versionName "1.0.0"
    ndk {
        debugSymbolLevel 'FULL'
    }
}

您可以通过以下方式制作这些 zip 文件 build\app\intermediates\merged_native_libs\release\out\lib 在你的 flutter 项目中

并将文件夹压缩到 symbols.zip 中,现在将其上传到 google 游戏控制台

重现后续步骤,此警告将消失

  1. 前往 [YOUR_PROJECT]\build\app\intermediates\merged_native_libs\release\out\lib

注意里面有3个文件夹

  • arm64-v8a
  • armeabi-v7a
  • x86_64
  1. Select 这 3 个文件夹并创建一个 .ZIP 文件。名字无所谓。

[请注意我没有压缩 ./lib 文件夹]

  1. 上传这个新的 *.ZIP 文件作为符号文件。

.

为了在Visual Studio代码中修复它:你应该先下载 来自 android 网站的 NDK。

  • 将 zip 文件解压缩到名为 ndk 的文件夹中,并将其放在您的 - 已安装 - Android SDK 文件夹下。像这样:Android/sdk/ndk

  • 然后打开app/build.gradle.

  • Android部分下。添加ndkPath 属性如下:ndkPath = <ndk-dir>

app/build.gradle ndkPath property

  • app/build.gradle末尾添加android.buildTypes.release.ndk.debugSymbolLevel = 'full'

  • 下一个 appbundle,由 flutter build appbundle 命令构建,不应在 Play 商店中给出任何关于本机调试符号的错误。

更详尽的解释是here

我能够使用 Android Gradle 插件 (AGP) 4.1.0 让 Flutter 构建本机调试符号,安装相应的 NDK 版本并将适当的配置添加到 android/app/build.gradle在 macOS 上(但它也应该适用于 Windows/Linux).

  1. 可选:运行 flutter build appbundle 并记下 .aab 文件大小
  2. 通过查看依赖项来检查您在 android/build.gradle 中使用的 AGP 版本,例如com.android.tools.build:gradle:4.1.04.1.0
  3. 检查您需要哪个版本的 NDK。假设您的 AGP 是 4.1.0 您要安装的 NDK 版本是 21.1.6352462 (对于其他 AGP 版本检查映射 here
  4. Install specific NDK version using Android Studio。或者,您可以使用 sdkmanager 和 CLI:$ANDROID_HOME/tools/bin/sdkmanager --install "ndk;21.1.6352462"
  5. android/app/build.gradle 中,在 android.defaultConfig 下添加 ndk { debugSymbolLevel 'FULL' } 又名集合 android.defaultConfig.ndk.debugSymbolLevel = 'FULL' as per this
  6. 运行flutter build appbundle.aab 现在应该包含本机调试符号并且比步骤 0
  7. 中的先前构建更大

故障排除:如果您在 CMake 周围遇到任何错误,我没有明确安装它,但您可能需要安装它,尤其是当您使用 Windows 和 you can do so using Android Studio 时.

我遇到了类似的问题。 对我真正有帮助的是:

  1. 请确保您的 Android Gradle 插件版本为 4.1 或更高版本。
  2. 在 SDK 管理器中安装 NDK(并行)。
  3. 在 SDK 管理器中安装 CMake。
  4. 添加
    ndkVersion <ndkVersion>
    ndk {
      debugSymbolLevel 'FULL'
    }

到app/build.gradle

我的决赛build.gradle:

...
android {
  compileSdkVersion 30
  defaultConfig {
    applicationId "com.example.app"
    minSdkVersion 21
    targetSdkVersion 30
    versionCode 28
    versionName "1.0.59"
    ndkVersion "23.1.7779620"
    ndk {
      debugSymbolLevel 'FULL'
    }
  }
  buildTypes {
    release {
      minifyEnabled true
      shrinkResources true
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }

  configurations {
    compile.exclude group: 'com.google.zxing'
  }
}
...

希望这对您有所帮助并节省您的时间