如何解决由于权限被拒绝错误,使用ndk构建的android项目失败
我买了一台新笔记本电脑(预装了macOS Catalina),并且正在设置一个现有的android项目,并安装了相同版本的ndk,并保持所有设置不变。
我试图构建该项目,然后得到了一些与clang和其他ndk二进制文件有关的macOS catalina安全提示,并解决了所有问题。
然后进行了干净的构建,并得到了此错误。
Error while executing process /Users/eshwar/Library/Android/sdk/ndk/21.2.6472646/ndk-build with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/Users/eshwar/workspace/project/frameworks/runtime-src/proj.android-studio/app/jni/Android.mk NDK_APPLICATION_MK=/Users/eshwar/workspace/project/frameworks/runtime-src/proj.android-studio/app/jni/Application.mk APP_ABI=arm64-v8a NDK_ALL_ABIS=arm64-v8a NDK_DEBUG=1 APP_PLATFORM=android-21 NDK_OUT=/Users/eshwar/workspace/project/frameworks/runtime-src/proj.android-studio/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT=/Users/eshwar/workspace/project/frameworks/runtime-src/proj.android-studio/app/build/intermediates/ndkBuild/debug/lib NDK_TOOLCHAIN_VERSION=clang -j16 NDK_DEBUG=1 /Users/eshwar/workspace/project/frameworks/runtime-src/proj.android-studio/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/libcocos2djs.so}
[arm64-v8a] Compile++ : cocos2djs_shared <= AppDelegate.cpp
make: execvp: /Users/eshwar/Library/Android/sdk/ndk/21.2.6472646/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++: Permission denied
make: *** [/Users/eshwar/Library/Android/sdk/ndk/21.2.6472646/build/core/build-binary.mk:478: /Users/eshwar/workspace/project/frameworks/runtime-src/proj.android-studio/app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/cocos2djs_shared/__/__/__/Classes/AppDelegate.o] Error 127
尝试了几次,并在不同文件中出现错误。
尝试:
- 重新安装NDK
- 尝试使用其他版本的NDK 在整个ndk文件夹中
- chmod -755
他们都没有成功。
然后想检查问题是否与我的笔记本电脑或项目有关。因此,安装了一个ndk示例项目并尝试构建,它成功运行。
$ /Users/eshwar/Library/Android/sdk/ndk/21.2.6472646/ndk-build NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/Users/eshwar/workspace/ndk-samples/other-builds/ndkbuild/hello-neon/app/Android.mk APP_ABI=armeabi-v7a NDK_ALL_ABIS=armeabi-v7a NDK_DEBUG=1 APP_PLATFORM=android-16 NDK_OUT=/Users/eshwar/workspace/ndk-samples/other-builds/ndkbuild/hello-neon/app/build/intermediates/ndkBuild/arm7Debug/obj NDK_LIBS_OUT=/Users/eshwar/workspace/ndk-samples/other-builds/ndkbuild/hello-neon/app/build/intermediates/ndkBuild/arm7Debug/lib hello-neon
[armeabi-v7a] Compile thumb : hello-neon <= helloneon.c
[armeabi-v7a] Compile thumb : hello-neon <= helloneon-intrinsics.c
[armeabi-v7a] Compile thumb : cpufeatures <= cpu-features.c
[armeabi-v7a] StaticLibrary : libcpufeatures.a
[armeabi-v7a] SharedLibrary : libhello-neon.so
然后在示例项目中检查了ndk-build命令,它在构建时没有-j16标志。然后将-j16标志手动添加到示例项目中,并得到相同的错误。
$ /Users/eshwar/Library/Android/sdk/ndk/21.2.6472646/ndk-build NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/Users/eshwar/workspace/ndk-samples/other-builds/ndkbuild/hello-neon/app/Android.mk APP_ABI=armeabi-v7a NDK_ALL_ABIS=armeabi-v7a NDK_DEBUG=1 APP_PLATFORM=android-16 NDK_OUT=/Users/eshwar/workspace/ndk-samples/other-builds/ndkbuild/hello-neon/app/build/intermediates/ndkBuild/arm7Debug/obj NDK_LIBS_OUT=/Users/eshwar/workspace/ndk-samples/other-builds/ndkbuild/hello-neon/app/build/intermediates/ndkBuild/arm7Debug/lib -j16 hello-neon
[armeabi-v7a] Compile thumb : hello-neon <= helloneon.c
make: execvp: /Users/eshwar/Library/Android/sdk/ndk/21.2.6472646/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang: Permission denied
make: *** [/Users/eshwar/Library/Android/sdk/ndk/21.2.6472646/build/core/build-binary.mk:476: /Users/eshwar/workspace/ndk-samples/other-builds/ndkbuild/hello-neon/app/build/intermediates/ndkBuild/arm7Debug/obj/local/armeabi-v7a/objs-debug/hello-neon//Users/eshwar/workspace/ndk-samples/hello-neon/app/src/main/cpp/helloneon.o] Error 127
make: *** Waiting for unfinished jobs....
[armeabi-v7a] StaticLibrary : libcpufeatures.a
[armeabi-v7a] Compile thumb : hello-neon <= helloneon-intrinsics.c
然后在没有-j16及其构建的情况下手动运行项目的ndk-build。
仅供参考:我的旧笔记本电脑(已更新为macOS Catalina)与-j16标志一起正常工作
-j16标志的含义是什么。我怎么知道从哪里添加它以及如何删除它。
编辑:使用ndk帮助找到
-j [N],--jobs[=N] Allow N jobs at once; infinite jobs with no arg.
尝试了多个j值。在8核处理器上,如果超过2则失败。有任何可以控制此设置的设置吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。