Error:Execution failed for task ':app:compileDebugNdk'.
com.android.ide.common.internal.LoggedErrorException:无法运行命令: C:\ Program Files \ ADT \ sdk \ android-ndk \ ndk-build.cmd NDK_PROJECT_PATH = null
Error Code:
1
这是我在android studio上运行make项目时获得的输出。 我在android studio 1.0上 sdk构建工具24.0但针对API 14
这是我的Android.mk文件的样子
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Main
LOCAL_SRC_FILES := Main.cpp
LOCAL_LDLIBS := -llog -ljnigraphics -lz -landroid
LOCAL_SHARED_LIBRARIES := libavformat libavcodec libswscale libavutil
include $(BUILD_SHARED_LIBRARY)
$(call import-module,ffmpeg/android/arm)
这是我的application.mk文件的样子
APP_ABI := armeabi
#APP_ABI := armeabi-v7a
APP_PLATFORM := android-14
答案 0 :(得分:24)
Error:Execution failed for task ':app:compileDebugNdk'.
意味着gradle android插件试图调用ndk-build本身来编译你的源代码。您应该获得比日志窗口中的错误代码更多的详细信息。
无论如何,目前它使用自动生成的Makefile执行此操作并忽略您的,因为您需要集成ffmpeg而无法工作。
要解决此问题,您应该禁用插件的自动ndk集成,并使其使用标准 libs 位置来获取.so文件:
sourceSets.main {
jniLibs.srcDir 'src/main/libs'
jni.srcDirs = [] //disable automatic ndk-build call
}
从那里你可以自己打电话给 ndk-build ,或者让gradle为你打电话:
import org.apache.tools.ant.taskdefs.condition.Os
// call regular ndk-build(.cmd) script from app directory
task ndkBuild(type: Exec) {
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
commandLine 'ndk-build.cmd', '-C', file('src/main').absolutePath
} else {
commandLine 'ndk-build', '-C', file('src/main').absolutePath
}
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}
答案 1 :(得分:20)
为了帮助任何搜索过此内容的人,但无法弄清楚上述陈述的去向... 它放在build.gradle中,位于{project_name} / app文件夹下。
具体做法是:
{YourApp} / app / build.gradle
而不是项目根目录下的build.gradle。
将其放在“defaultConfig”部分中。
defaultConfig {
....
sourceSets.main {
jniLibs.srcDir 'src/main/libs'
jni.srcDirs = [] //disable automatic ndk-build call
}
希望这个小建议可以防止有人花费过多的时间来弄清楚需要做出哪些改变和改变。
答案 2 :(得分:0)
以下模块:应用程序代码完美运行..所以你可以参考这个...... ==>
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.mnthn.liking"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
jni.srcDirs = ['src/main/jniLibs/']
jni.srcDirs = []
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile project(':openCVLibrary331')
}
答案 3 :(得分:0)
我今天遇到了这个问题(发布问题后3年)并注意到如果@ ph0b和@SpacemanScott的答案不起作用,可能是由于最新手机缺乏2.x.x支持。然后尝试安装最新的OpenCV。