Android原生项目ndk-build构建失败,jni.so文件未更新
NDK构建问题排查与解决
1. 处理process_begin: CreateProcess(NULL, uname -s, ...) failed错误
- 该错误源于Windows环境缺少Unix系统的
uname命令,NDK构建脚本调用此命令时失败。 - 修复步骤:
- 确认下载的NDK r26b是Windows版本,若误下Linux/macOS版本需重新下载。
- 以管理员权限启动cmd,避免权限限制导致命令执行失败。
- 检查项目
jni目录下的Android.mk或Application.mk,若存在自定义调用uname的逻辑,替换为Windows兼容写法:比如用NDK内置的HOST_OS环境变量判断系统,或改用Windows的set命令获取系统信息。
2. 修复APP_PLATFORM未设置警告
- 方法一:在项目
jni/Application.mk中添加配置:APP_PLATFORM := android-XX(XX替换为目标API级别,如android-33,需匹配项目最低兼容版本)。 - 方法二:构建时直接通过命令行指定:
ndk_path\ndk-build -C C:\Users\AdnanChohan\Documents\MyProject\native APP_PLATFORM=android-33
3. 修正链接器标志使用不当警告
- 打开
jni/Android.mk,检查LOCAL_LDFLAGS中的配置,移除NDK r26b已废弃的链接器选项。 - 参考NDK r26b本地文档中的链接器规范,使用对应版本推荐的标志,确保与目标架构(如arm64-v8a、armeabi-v7a)兼容。
4. 解决代码修改后.so文件未更新问题
- 先执行清理命令删除旧构建产物:
ndk_path\ndk-build -C C:\Users\AdnanChohan\Documents\MyProject\native clean - 再重新执行构建命令,确保新代码被编译。
- 检查
Android.mk中的LOCAL_SRC_FILES,确认修改的代码文件已被包含在构建列表中,避免代码未进入编译流程。
内容的提问来源于stack exchange,提问作者Adnan Chohan
相关产品推荐
相关产品推荐

