Подтвердить что ты не робот

Выполнение не выполнено для задачи ': app: compileDebugNdk' не удалось выполнить эту команду ndk-build.cmd

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

это результат, который я получаю при попытке запустить make в моем проекте на студии Android. Я нахожусь в 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
4b9b3361

Ответ 1

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
}

Для получения дополнительной информации о том, почему все это, вы можете проверить этот gist и мой пост в блоге.

Ответ 2

Чтобы помочь любому, кто искал это, но не может понять, куда идет вышеуказанное утверждение... Он помещается в 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
    }

Надеюсь, этот небольшой совет не позволит кому-то потратить чрезмерное время, пытаясь выяснить, где и где это изменение должно быть сделано.

Ответ 3

ниже модуля: код приложения работает отлично..также вы можете ссылаться на это... == >

  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')
}

Ответ 4

Я прошел эту проблему сегодня (через 3 года после публикации вопроса) и заметил, что если ответы @ph0b и @SpacemanScott не работают, это может быть из-за отсутствия поддержки 2.x.x в новейших телефонах. Попробуйте установить последнюю версию OpenCV.