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スタジオのプロジェクトで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
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
}
これを検索したが、上記のステートメントがどこに行くのかわからない人を助けるために... {project_name}/appフォルダーの下にあるbuild.gradleに配置されます。
具体的には:
{YourApp} / app / build.gradle
プロジェクトのルートにあるbuild.gradleではありません。
「defaultConfig」セクション内に配置します。
defaultConfig {
....
sourceSets.main {
jniLibs.srcDir 'src/main/libs'
jni.srcDirs = [] //disable automatic ndk-build call
}
うまくいけば、この小さなアドバイスにより、誰かがこの変更をどこで行う必要があるかを把握しようとして過度の時間を費やすことを防ぐことができます。
module:appコードの下で完璧に動作します..これを参照できます... ==>
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年後)この問題を経験しましたが、@ ph0bと@SpacemanScottの回答が機能しない場合は、最新の携帯電話で2.x.xがサポートされていない可能性があります。その後、最新のOpenCVをインストールしてみてください。