如何在Java 11环境下为安卓项目生成native-debug-symbols文件
安卓项目Java版本与native调试符号生成冲突解决方案
Java 11环境下无法生成native-debug-symbols的核心原因是当前使用的Android Gradle插件(AGP)版本与NDK 22.1存在兼容bug,按以下步骤操作即可解决冲突:
- 固定Java版本为11,禁止回退到1.8版本。你当前使用的compileSdk 31搭配对应AGP 7.0+版本强制要求Java 11运行环境,回退1.8必然触发Gradle兼容报错。
- 调整app层级build.gradle的buildTypes配置,你当前仅在release构建类型中配置了调试符号输出,需给debug构建类型也补充对应配置,修改后区块代码如下:
buildTypes { debug { ndk { debugSymbolLevel 'FULL' } } release { minifyEnabled true shrinkResources true signingConfig signingConfigs.debug ndk { debugSymbolLevel 'FULL' } externalNativeBuild { cmake { version = "3.18.1" } } } }
- 核对Gradle与AGP版本匹配关系,compileSdk 31对应的稳定兼容组合为:AGP 7.0.4 + Gradle 7.0.2,可在根目录build.gradle中修改AGP版本,在gradle/wrapper/gradle-wrapper.properties中修改Gradle发行版地址。
- 清理重建项目,依次执行命令
./gradlew clean、./gradlew assembleDebug,构建完成后native-debug-symbols压缩包会输出在app/build/outputs/native-debug-symbols/debug目录下。 - 若仍生成失败,可使用NDK自带工具手动提取调试符号,执行命令:
${NDK安装路径}/toolchains/llvm/prebuilt/[操作系统平台]/bin/llvm-objcopy --only-keep-debug 目标so文件路径 输出符号so文件路径。
内容的提问来源于stack exchange,提问作者Jonathan
相关产品推荐
相关产品推荐

