2016-09-15 75 views
9

Próbuję zintegrować funkcjonalność ndkBuild w istniejącym projekcie Android Studio, używając nowego studia Android 2.2, aby włączyć debugowanie C++ itp. Próbowałem już jeden z ndk przykładowe projekty, które oferuje Android Studio 2.2, co działa doskonale. Jednak, gdy próbuję uruchomić Gradle poleceń w moim projekcie, i ten komunikat o błędzie:Nie można znaleźć metody externalNativeBuild() dla argumentów

Błąd: (73, 0) nie udało się znaleźć metodę externalNativeBuild() dla argumentów [build_c6heui1f67l8o1c3ifgpntw6 $ _run_closure2 $ _closure9 @ 4329c1c9 ] na projekcie ": core" typu org.gradle.api.Project.

Postępując tego opisu http://tools.android.com/tech-docs/external-c-builds skończyło się z Gradle skryptu zawierającego następujące polecenia:

externalNativeBuild{ 
    ndkBuild{ 
     path "$projectDir/jni/Android.mk" 
    } 
} 

externalNativeBuild { 
    ndkBuild { 
     arguments "NDK_APPLICATION_MK:=$projectDir/jni/Application.mk" 
     abiFilters "armeabi-v7a", "armeabi","arm64-v8a","x86" 
     cppFlags "-frtti -fexceptions" 
    } 
} 

ja może przegapić czegoś tutaj z konfiguracji projektu? mam ustawić lokalizację Android NDK prawidłowo pod

Plik -> Struktura Project ... -> SDK Location -> Android NDK lokalizacja

w moim android studio.

Coś jeszcze mogłem zapomnieć?

Czy ktoś już wcześniej borykał się z podobnym problemem?

rada będzie mile widziane =)

+1

Czy można umieścić externalNativeBuild wewnątrz Androida {} blokować? – tianwei

+0

Tak, zrobiłem, więc to nie może być źródło błędu – MinionDeveloper

Odpowiedz

11

prostu miał ten błąd się. W katalogu głównym build.gradle, upewnij się, że Gradle jest ustawiony na co najmniej w wersji 2.2.0:

Należy więc mieć następujące w buildscript {...}

dependencies { 
    classpath 'com.android.tools.build:gradle:2.2.0' 
} 
+0

dzięki temu usunięto komunikat o błędzie dla mnie =) – MinionDeveloper

1
android { 
    defaultConfig { 
     externalNativeBuild { 
      cmake { 
       arguments '-DANDROID_TOOLCHAIN=clang' 
      } 
     } 
    } 
2

Sugerowana przez Kun Ming Xies odpowiedź mam oddzielone moje cmake udział w dwóch, aby pozbyć się irytujących błędów:

Could not find method arguments() for arguments [-DREVISION=1.3.1] on object of type com.android.build.gradle.internal.dsl.CmakeOptions.

Th e pierwsza część w defaultConfig zawiera konfigurację (argumenty wiersza poleceń dla CMake i C++ flagi), a drugi zawiera ścieżkę do CMakeLists.txt:

def revision = "1.3.1" 
android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.2" 

    defaultConfig { 
    versionCode = ... 
    versionName "${revision}" 
    externalNativeBuild { 
     cmake { 
     arguments "-DREVISION=${revision}" 
     cppFlags '-fexceptions', '-frtti', '-std=c++11' 
     } 
    } 
    } 

    buildTypes { } 

    lintOptions { } 

    externalNativeBuild { 
    cmake { 
     path 'CMakeLists.txt' 
    } 
    } 
}