博观而约取,厚积而薄发。这篇文章主要讲述如何解决Android ndk build命令失败?相关的知识,希望能为你提供帮助。
我在android studio中使用android ndk开发简单的ndk示例。运行我的app studio时显示以下错误。
Build command failed.
Error while executing process D:Sdkcmake3.6.4111459incmake.exe with
arguments {--build D:Android StudioWorkspaceNDKSampleapp.externalNativeBuildcmakedebugarm64-v8a --target native-lib}
[1/2] Building CXX object CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.oFAILED: D:Sdk
dk-bundle oolchainsllvmprebuiltwindows-x86_64inclang++.exe--target=aarch64-none-linux-android --gcc-toolchain=D:/Sdk/ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64 --sysroot=D:/Sdk/ndk-bundle/sysroot-Dnative_lib_EXPORTS -isystem D:/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include -isystem D:/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/arm64-v8a/include -isystem D:/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include/backward -isystem D:/Sdk/ndk-bundle/sysroot/usr/include/aarch64-linux-android -D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -Wa,--noexecstack -Wformat -Werror=format-security-frtti -fexceptions -O0 -fno-limit-debug-info-fPIC -MD -MT CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o -MF CMakeFiles
ative-lib.dirsrcmaincpp
ative-lib.cpp.o.d -o CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o -c "D:Android StudioWorkspaceNDKSampleappsrcmaincpp
ative-lib.cpp"
error: error reading 'D:Android StudioWorkspaceNDKSampleappsrcmaincpp
ative-lib.cpp'
1 error generated.ninja: build stopped: subcommand failed.
我有搜索很多,但无法找到正确的答案,为什么我在这里问。我还unintsall所有组件,并重新安装在我的工作室仍然有错误。
另一件事如果我从.CPP将文件扩展名更改为.C,整个项目都会得到编译,甚至可以正常运行。我不知道为什么它不适用于.CPP文件。
我正在使用的组件。
【如何解决Android ndk build命令失败()】Android Stuido-3.1.3
gradle-3.1.0
cmake-3.6.4111459
Android ndk-17.1.4828580
lldb -3.1
本机lib.cpp
#include <
jni.h>
#include <
string>
extern "C" JNIEXPORT jstringJNICALLjava_com_mastek_ndksample_MainActivity_stringFromJNI(
JNIEnv *env,
jobject /* this */) {
std::string hello = "Hello from C++";
return env->
NewStringUTF(hello.c_str());
}
的build.gradle
apply plugin: 'com.android.application'android {compileSdkVersion 27
defaultConfig {
applicationId "com.example.ndksample"
minSdkVersion 15
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags "-frtti -fexceptions"
}
}}sourceSets {
main {
jniLibs.srcDirs = ['src/main/jniLibs']
}
}buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}}dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'}
有人知道请帮我解决这个问题。提前致谢。
答案当项目文件的路径包含空格时,NDK构建失败。要修复构建,请将项目复制到没有空格的路径。
另一答案经过大量的试验和github google的帮助,我能够解决。要解决问题,我已按照以下步骤操作。
1.到项目目录。
2.deleted .gradle,app / .externalNativeBuild和app / build。
3.将local.properties ndk路径更改为外部ndk-r16b。
4.通过Android工作室运行。
5.最终apk是生成的。
推荐阅读
- 如何让电子应用程序打开以“http(//”或“https://”开头的所有链接,并在浏览器中打开target =“_ blank”而不是app)
- 我们如何将CMake或ndk-build集成到Android Studio 3.0.1中( Gradle版本是4.1,android插件版本3.0.1)
- 如何将外部库集成到Cocos Android项目中
- UINavigationController appDelegate UIViewController以编程方式
- 从AppDelegate中访问NavigationController指向的初始视图
- 是否可以在不使用继承的情况下在viewDidAppear上调用某些代码
- UIViewController viewDidLoad vs. viewWillAppear(什么是适当的分工())
- Swift - 从viewController访问AppDelegate窗口
- mcapply(所有计划的核心在用户代码中遇到错误)