2016-09-15 822 views
9

我試圖將ndkBuild功能整合到現有的android studio項目中,使用新的android studio 2.2,以便啓用C++調試等。 我試過了其中一個android studio 2.2提供的ndk示例項目,它工作得很好。然而,當我嘗試在我自己的項目運行gradle這個命令,我收到此錯誤信息:找不到方法externalNativeBuild()參數

錯誤:(73,0)找不到參數方法externalNativeBuild()[build_c6heui1f67l8o1c3ifgpntw6 $ _run_closure2 $ _closure9 @ 4329c1c9 ]在類型爲org.gradle.api.Project的項目':core'上。

按照此說明 http://tools.android.com/tech-docs/external-c-builds 我結束了一個腳本的Gradle,其中包括以下命令:

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" 
    } 
} 

難道我也許錯過了對項目設置了一些東西? >項目結構... - - > SDK位置 - >的Android NDK位置

在我的Android工作室 我已經正確下

文件設置的Android NDK位置

還有什麼我可能忘記了?

有沒有人遇到過類似的問題?

建議將不勝感激=)

+1

你把externalNativeBuild的機器人的內部{}塊? – tianwei

+0

是的,我做了,所以它不能是錯誤來源 – MinionDeveloper

回答

11

只是自己有這個錯誤。在你的根build.gradle,確保gradle這個被設定爲至少2.2.0版本:

所以,你應該有昆明謝胱答案提出在buildscript {...}

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

謝謝這刪除了我的錯誤消息=) – MinionDeveloper

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

以下,我已經分居兩我cmake部分擺脫煩人的錯誤:

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

釷E在defaultConfig第一部分包括配置(CMake和C++標記命令行參數),和第二個包含的路徑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' 
    } 
    } 
}