Playstore 错误: AppBundle 包含本机代码,您没有上传调试符号

当我想在 Playstore 上发布一个新的 flutter 应用包时,我得到了这个错误: ”这个应用程序包包含本机代码,您还没有上传调试符号。我们建议您上传一个符号文件,使您的崩溃和 ANR 更容易分析和调试。” 我找不到任何方法来解决这个问题。我是一个新手,有些不知所措,发布了一些应用程序。 任何帮助都是极好的。

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

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

  • 地点: 构建文件‘ C: 用户输入 AndroidStudioProjects ebo android app Build.gradle’行: 1

  • 出了什么问题: 评估项目“ : app”时出现问题。

无法获取 org.gradle.api. Project 类型的‘ android’未知属性: app’。

  • 使用—— stacktrace 选项运行以获取堆栈跟踪。使用—— info 或—— debug 选项运行以获得更多的日志输出。扫描一下,看看有什么发现。

  • 如需更多帮助,请访问 < a href = “ https://help. gradle.org”rel = “ norefrer”> https://help.gradle.org

3秒内构建失败 运行 Gradle 任务‘ bundleRelease’..。 运行 Gradle 任务‘ bundleRelease’... 完成4,3秒 Gradle 任务 bundle 发布失败,退出代码1

94492 次浏览

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

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

所以我建议你返回经典的播放控制台,它会让你通过:)

更新: 所以现在只需要使用一个更新的 Gradle 并添加 NDK 调试符号到构建中

根据播放控制台上的以下消息,谢克尔给出的答案将不会有用。

旧版游戏机将于十一月二日起停售, 你已经使用了新的游戏控制台,所以你不需要 做任何事情。一些功能正在消失,如果你想检查他们 最后一次。

只是个警告,别的什么都不是,继续吧。

如果你不想要任何警告,请点击这个链接,按照以下步骤操作:

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

您可以按原样使用新版本的 玩具店

无法获取 org.gradle.api. Project 类型的‘ android’未知属性: app’。

必须在 gradle.properties 中添加它,而不是 build.gradle 中

我也有同样的问题。

可能的解决办法:

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

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

这里有一个问题帖子: https://github.com/flutter/flutter/issues/60240

设置步骤如下:

  • 前置条件: 安装 Android 工作室4.1 + 和 Gradle 4.1 +
  1. 在 SDK 管理器中安装 NDK (并排) enter image description here

  2. 在 local.properties 中写入到 NDK 的路径 enter image description here

  3. 添加 app/build.gradle (最后一行) android.buildTypes.release.ndk.debugSymbolLevel = 'FULL' enter image description here

如果要解决此警告错误: 此应用程序包包含本机代码,并且您尚未上载调试符号。我们建议您上传一个符号文件,使您的崩溃和 ANR 更容易分析和调试。还要确保安装 CMake

如果您的分级版本高于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'
}
}

你可以使这些压缩文件通过去 build\app\intermediates\merged_native_libs\release\out\lib在您的扑动项目

将文件夹压缩成 symbols.zip,现在上传到谷歌播放控制台

复制下一步操作,此警告将消失

  1. 去吧 [YOUR_PROJECT]\build\app\intermediates\merged_native_libs\release\out\lib

注意里面有3个文件夹

  • Arm64-v8a
  • Armeabi-v7a
  • X86 _ 64
  1. 选择这3个文件夹并创建一个.zip 文件。名称不重要。

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

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

.

为了在 VisualStudio 代码中修复它: 您应该首先下载 机器人网站上的 NDK。

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

  • 然后打开 app/build.gradle

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

App/build.gradle ndkPath 属性

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

  • flutter build appbundle命令构建的下一个应用程序包不应该在播放存储上给出关于本机调试符号的任何错误。

更详细的解释是 给你

我能够让 Flutter 使用 Android Gradle Plugin (AGP)4.1.0构建本地调试符号,安装相应的 NDK 版本,并在 macOS (但它也可以在 Windows/Linux 上运行)上为 android/app/build.gradle添加适当的配置。

  1. 可选: 运行 flutter build appbundle并注意 .aab文件大小
  2. 通过查看依赖关系(如 com.android.tools.build:gradle:4.1.04.1.0)来检查在 android/build.gradle中使用的 AGP 的版本
  3. 检查你需要哪个版本的 NDK。假设你的 AGP 是 4.1.0,你要安装的 NDK 版本是 21.1.6352462 (对于其他 AGP 版本,检查映射 < a href = “ https://developer.android.com/Studio/Projects/install-ndk # default-ndk-per-AGP”rel = “ nofollow noReferrer”> here )
  4. Install specific NDK version using Android Studio. Alternatively you can use sdkmanager and the 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'
  6. 运行 flutter build appbundle.aab现在应该包含本机调试符号,并且比步骤0中的前一个版本大

故障排除: 如果您在 CMake 方面遇到任何错误,我没有明确地安装它,但您可能需要这样做,特别是如果您使用的是 Windows 和 你可以使用 Android Studio 来实现这一点

我也有过类似的问题。 真正帮到我的是:

  1. 确保你的 Android Gradle 插件版本是4.1或更高版本。
  2. 在 SDK 管理器中安装 NDK (并排)。
  3. 在 SDK 管理器中安装 CMake。
    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'
}
}
...

我希望这能帮到你,节省你的时间

简单的方法,去构建应用中间合并 _ 本地 _ 库发布出库,你会发现3/4文件夹,压缩那些,上传这个 ZIP 从发布选项(上传符号文件)。在捆绑审查之后,警告将不复存在。

我刚刚将 ndk 从21.4.7075529升级到22.1.7171670,现在我得到了调试符号。

我使用的是 com.android.tools.build: gradle: 7.1.1和 React Natvive 0.69。

不需要创建和上传 zip 文件,您可以在 app\build.gradle文件中包含以下内容:

buildTypes {
debug {
firebaseCrashlytics { // This is just here for local testing and is optional.
nativeSymbolUploadEnabled true
unstrippedNativeLibsDir file("build/app/intermediates/merged_native_libs/debug/out/lib")
}
}
release {
// ..
firebaseCrashlytics { // Insert this
nativeSymbolUploadEnabled true
unstrippedNativeLibsDir file("build/app/intermediates/merged_native_libs/release/out/lib")
}
}
}

以下是一些参考文献: Https://firebase.google.com/docs/crashlytics/ndk-reports#upload-symbols-external-dependencies

希望能帮上忙!