2015-02-25 16 views
6

Attualmente in esecuzione Android Studio 1.1.0. Installato NDK e aggiunto il collegamento al file build.gradle. La costruzione del progetto dà una traccia con il seguente testo.Supporto NDK deprecato per 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 non supportato da Android Studio?

+1

possibile duplicato del [Android Studio, Gradle e NDK] (http://stackoverflow.com/questions/16667903/android-studio-gradle-and-ndk) –

+0

Grazie @DanAlbert – JGPhilip

risposta

10

Il supporto NDK corrente funziona ancora per progetti semplici (cioè sorgenti C/C++ senza dipendenze da altre librerie predefinite NDK), incluso quando si utilizza l'ultimo NDK NDK.

Ma è davvero limitato, e come dice l'avvertimento, è deprecato, sì.

Quello che consiglio di fare è semplicemente disattivarlo, e rendere gradle call ndk-build direttamente. In questo modo è possibile mantenere i file di configurazione Android.mk/Application.mk classici, e chiamando NDK-build dal progetto continuerà a funzionare lo stesso con un progetto 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

cosa che "AbsolutePath" ? – dhams

1

Io uso il metodo seguito per la costruzione il percorso ndk-build assoluto:

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 
} 

Usato come:

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

Ora Android Studio 1.3 sul canale Canary supporta pienamente NDK. Provalo. Riferimento: http://tools.android.com/download/studio/canary/latest

+1

Quello le cui note di rilascio dicono "Scusa, questa build non contiene ancora il supporto C/C++"? A meno che non sia una caratteristica diversa, sembra che si riferisca a NDK – kaay

Problemi correlati