App Bundle 包含本机代码,我找不到调试符号 .zip

Posted

技术标签:

【中文标题】App Bundle 包含本机代码,我找不到调试符号 .zip【英文标题】:App Bundle contains native code, I Can't Find debug symbols .zip 【发布时间】:2021-06-10 05:30:29 【问题描述】:

这是关于 PlayStore 警告调试符号

添加行到 build.gradle(app) 后我已经成功构建 Gradle

     android.buildTypes.release.ndk.debugSymbolLevel = 'FULL'

但遵循指令https://developer.android.com/studio/build/shrink-code 当我构建一个 Apk 时, 我找不到 native-debug-symbols.zip 文件, 所以我的问题是如何获取文件 native-debug-symbols.zip 文件

【问题讨论】:

我也遇到同样的问题,等待解答 还在等待答复 【参考方案1】:

如果您已设法在项目中安装并正确配置了新的 Gradle、NDK 设置和 CMAKE,该文件将自动包含在您的签名包(.aab 文件)中。以及许多其他 cmets 中讨论的 Gradle 设置。所以你不需要手动上传。

要在 Google Play Store 上启动混淆文件之前检查是否添加了混淆文件,请创建一个新的签名包 .aab 文件。在 Android Studio 中,创建文件时会弹出一个小窗口 看起来像这样。点击分析应用按钮。

然后你会在这里看到它:

如果你在那里看到它,你可以将它上传到 PlayStore,然后你就可以开始了。

【讨论】:

【参考方案2】:

找到了 native-debug-symbols.zip,它是在我使用此步骤后生成的: 构建 -> 生成签名包/APK -> APK。

然后它在文件夹 build->outputs->native-debug-symbols 上创建

我不知道是什么原因造成的,但我尝试的是更改代码

来自 android.defaultConfig.ndk.debugSymbolLevel = 'FULL'

android.buildTypes.release.ndk.debugSymbolLevel = 'FULL'

我还仔细检查了 NDK 是否已下载到我的 SDK 中。

在我的build.gradle 中也生成了android.ndkVersion '22.1.7171670'

And File -> Project Structure -> 如果未下载,请下载 Android NDK。

【讨论】:

【参考方案3】:

我不确定@MuhammadKamal 的回答是否对我有用,但它可能让我走上了正确的道路。我认为要使其正常工作,不仅需要最新的 NDK。我之前使用的是 Android Studio 4.2.1,但坚持使用旧版本的 CMake 和 NDK,并使用 Gradle Plugin 4.2.1。

为了生成调试符号,我更新了所有 build.gradle 文件,现在 android 应用程序包 (AAB) 看起来与以前不同,而且我的系统上也没有生成 native-debug-symbols.zip .

我认为自动将调试符号添加到 AAB 需要 NDK 版本 22.1.7171670。 android.ndkVersion '22.1.7171670'

我还切换到了更新版本的 CMake: externalNativeBuild.cmake.version "3.18.1".

我现在在 Android Studio 4.2.2 中使用 Gradle Plugin 4.2.2。

在我的系统上,当设置为“FULL”时,Gradle 抱怨调试符号级别设置。似乎该值必须小写。这可能是在较新的 gradle 插件版本中引入的更改: android.buildTypes.release.ndk.debugSymbolLevel = 'full'.

如果不是所有这些更改都使调试符号自动嵌入到 AAB 中并生成了 zip 文件,我不完全确定其中的哪些更改。如果只需要更新的 NDK,请随时接受@MuhammadKamal 的回答。我想为其他人记录在我的构建中起作用的内容,以填补任何空白并可能帮助解决问题。

调试符号将存储在 AAB 中的以下位置: BUNDLE-METADATA\com.android.tools.build.debugsymbols\<ABI>\libX.dbg

严格来说,@DevDasTour 只询问了 APK 和 native-debug-symbols.zip。根据我的测试,APK 不能包含调试符号,而 ABB 可以。

如果您仍希望将 APK 和调试符号分别上传到 Google Play,请在此处生成 native-debug-symbols.zip: <project_name>\build\outputs\native-debug-symbols\release\native-debug-symbols.zip

顺便说一句,AAB 还将包含 Java 去混淆映射,因此只需一个文件即可上传到 Google Play。

【讨论】:

以上是关于App Bundle 包含本机代码,我找不到调试符号 .zip的主要内容,如果未能解决你的问题,请参考以下文章

调试包含在 C++/CLI DLL 中的静态库时,调试器不会进入本机代码

APK 或 App Bundle 可用于 64 位设备,但它们只有 32 位本机代码

Android 无法将应用程序添加到谷歌商店 APP 或 App Bundle 可用于 64 位设备,但它们只有 32 位本机代码

APK 或 App Bundle 可用于 64 位设备,但它们只有 32 位本机代码 Unity Play 商店错误

调试 java-native 交互

归档 ipa 时在 bundle 中找不到 main~ipad.storyboardc