2015-02-25 3 views
6

В настоящее время работает Android Studio 1.1.0. Установил NDK и добавил ссылку на файл build.gradle. Построение проекта дает след со следующим текстом.Поддержка NDK устарела для Android Studio 1.1.0

WARNING [Project: :app] Current NDK support is deprecated. Alternative will be provided in the future. 

android-ndk-r10d\ndk-build.cmd'' finished with non-zero exit value 1 

Является ли NDK r10d неподдерживаемым Android Studio?

+1

возможно дубликат [Android студии, Gradle и НДК] (http://stackoverflow.com/questions/16667903/android-studio-gradle-and-ndk) –

+0

Спасибо @DanAlbert – JGPhilip

ответ

10

Текущая поддержка NDK по-прежнему работает для простых проектов (то есть источников C/C++ без зависимости от других ранее созданных библиотек NDK), в том числе при использовании последней версии NDK r10d.

Но это действительно ограничено, и, как говорится в предупреждении, оно устарело, да.

Что я рекомендую сделать, это просто деактивировать его и сделать вызов градиента ndk-build напрямую. Таким образом, вы можете сохранить ваши классические файлы конфигурации Android.mk/Application.mk, и вызов НДК-строить из проекта все равно будет работать так же, как и с проектом Eclipse:

import org.apache.tools.ant.taskdefs.condition.Os 

... 

android { 
    ... 
    sourceSets.main { 
     jniLibs.srcDir 'src/main/libs' //set .so files location to libs instead of jniLibs 
     jni.srcDirs = [] //disable automatic ndk-build call 
    } 

    // add a task that calls 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 
     } 
    } 

    // add this task as a dependency of Java compilation 
    tasks.withType(JavaCompile) { 
     compileTask -> compileTask.dependsOn ndkBuild 
    } 
} 
+0

Что, что "absolutePath" ? – dhams

1

Я использую метод ниже, чтобы построить ndk-build абсолютный путь:

def getNdkBuildExecutablePath() { 
    File ndkDir = android.ndkDirectory 
    if (ndkDir == null) { 
     throw new Exception('NDK directory is not configured.') 
    } 
    def isWindows = System.properties['os.name'].toLowerCase().contains('windows') 
    def ndkBuildFile = new File(ndkDir, isWindows ? 'ndk-build.cmd' : 'ndk-build') 
    if (!ndkBuildFile.exists()) { 
     throw new Exception(
      "ndk-build executable not found: $ndkBuildFile.absolutePath") 
    } 
    ndkBuildFile.absolutePath 
} 

Используется как:

commandLine getNdkBuildExecutablePath(), '-C', ... 
1

Теперь Android-студия 1,3 на Canary канал полностью поддерживает NDK. Попробуй. Справка: http://tools.android.com/download/studio/canary/latest

+1

Тот, чьи заметки о выпуске говорят «Извините, эта сборка еще не содержит поддержки C/C++»? Если это не другая функция, это звучит так, как будто это относится к NDK – kaay

Смежные вопросы