【问题标题】:Playstore error: App Bundle contains native code, and you've not uploaded debug symbolsPlaystore 错误:App Bundle 包含本机代码,并且您尚未上传调试符号
【发布时间】:2020-10-15 12:31:09
【问题描述】:

当我想向 Playstore 发布新的 Flutter 应用程序包时。我收到此错误: “此 App Bundle 包含原生代码,并且您尚未上传调试符号。我们建议您上传符号文件,以使您的崩溃和 ANR 更易于分析和调试。” 我找不到任何方法来解决这个问题。我是颤振和发布应用程序的新手,有点绝望...... 任何帮助都会很棒。

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

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

  • 在哪里: 构建文件 'C:\Users\filip\AndroidStudioProjects\ehbo\android\app\build.gradle' 行:1

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

无法为 org.gradle.api.Project 类型的项目 ':app' 获取未知属性 'android'。

  • 尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。运行 --scan 以获得完整的见解。

  • 通过https://help.gradle.org获得更多帮助

3 秒内构建失败 正在运行 Gradle 任务“bundleRelease”... 运行 Gradle 任务 'bundleRelease'... 完成 4,3 秒 Gradle 任务 bundleRelease 失败,退出代码为 1

【问题讨论】:

  • 看来你需要上传去混淆/符号化文件。检查以下链接:support.google.com/googleplay/android-developer/answer/…
  • 这只是测试版的问题,这个功能还没有在稳定的 gradle 版本中,只有在 4.1 所以看起来 Play 控制台测试版现在适用于 android studio 测试版。

标签: android-studio flutter google-play


【解决方案1】:

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

貌似只有 Android Studio 4.1 才有,因为我现在只能自动获取 Gradle 4.0.0。

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

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

【讨论】:

  • 当,我认为你是对的。我也只能使用 Android Studio 4.0 升级到 4.0。
  • 好的,谢谢,我会用经典的 Play 控制台试试
  • 是的!它有效(我使用了经典的 Play Console)。非常感谢!
  • 我不这么认为,未来我们需要做一些改变。如果我想使用新版 Play 管理中心怎么办?
  • 在下面的帖子中添加了新的描述。设置是正确的,但看起来 Flutter 团队需要更新一些构建的东西
【解决方案2】:

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

旧版 Play 管理中心将于 11 月 2 日停用, 2020 您已经在使用新版 Play 管理中心,因此无需 做任何事情。如果您想检查它们,一些功能将会消失 最后一次。

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

如果您不想收到任何警告,请转到此链接并按照以下步骤操作:

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

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

【讨论】:

    【解决方案3】:

    无法为 org.gradle.api.Project 类型的项目 ':app' 获取未知属性 'android'。

    你必须将它添加到 gradle.properties 而不是 build.gradle

    【讨论】:

    【解决方案4】:

    我也有同样的问题。

    可能的解决方案:

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

    【讨论】:

      【解决方案5】:

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

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

      设置步骤如下:

      • 前提条件:安装 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' 时出现问题。 > 无法为 BuildType_Decorated{name=release 获取未知属性“ndk”,
      • @MSaudi 查看此链接 - 我遇到了同样的问题。升级我的gradle版本后解决了。见stackoverflow.com/a/63436935/7015661
      • ndk.dirdepreciated
      • 这个选项对于 Flutter 应用程序是否比压缩 \build\app\intermediates\merged_native_libs\release\out\lib 符号更好?使用 NDK 是自动的,是的,但 NDK 生成的符号似乎比位于 mencioned 文件夹中的符号小得多。对于我的应用,NDK 大小为 5kB,merged_native_libs 为 12MB
      【解决方案6】:

      如果你想解决这个警告错误: 此 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'
          }
      }
      

      【讨论】:

      • @Rishav 你用 React Native 解决了吗?
      • @LawrenceMacharia 不。我意识到我不在乎,一切都毫无意义。
      • 这个解决方案适用于我的 React-Native,但就我而言,我必须安装 CMake 并将我的 NDK 更新到版本 23.0.7599858,然后我在 build.gradle(app) 和终于遵循了这个解决方案:stackoverflow.com/a/65367767/6674314
      • @acuriousguy 解决方案也适用于 React Native。确保安装 CMake:developer.android.com/studio/projects/install-ndk#kts 并将 debugSymbolLevel 设置为 FULL 而不是 SYMBOL_TABLE
      【解决方案7】:

      您可以通过转到制作这些 zip 文件 build\app\intermediates\merged_native_libs\release\out\lib 在你的 Flutter 项目中

      将文件夹压缩成symbol.zip,现在上传到google play控制台

      【讨论】:

        【解决方案8】:

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

        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 文件作为符号文件上传。

        .

        【讨论】:

        【解决方案9】:

        要在 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'

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

        更详尽的解释是here

        【讨论】:

          【解决方案10】:

          我能够让 Flutter 使用 Android Gradle 插件 (AGP) 4.1.0 构建本机调试符号,安装相应的 NDK 版本并将适当的配置添加到 macOS 上的android/app/build.gradle (但它也应该适用于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' 按照this
          6. 运行flutter build appbundle.aab 现在应该包含本机调试符号,并且比第 0 步中的先前构建更大

          疑难解答:如果您在 CMake 中遇到任何错误,我没有明确安装它,但您可能需要安装它,尤其是在您使用 Windows 和you can do so using Android Studio 时。

          【讨论】:

            【解决方案11】:

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

            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'
              }
            }
            ...
            

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

            【讨论】:

            • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
            • 为了在 vsCode 中进行这项工作,我必须在 local.properties 文件中添加现已弃用的选项 ndk.dir=/path/to/ndk。
            • ndkVersion "23.1.7779620" 这个或者它可以是任何东西?
            猜你喜欢
            • 2021-03-09
            • 2021-06-10
            • 2021-02-24
            • 2021-01-05
            • 2011-09-27
            • 2022-11-10
            • 2020-07-26
            • 2021-03-24
            • 2016-08-03
            相关资源
            最近更新 更多