找不到参数的方法 externalNativeBuild()
Could not find method externalNativeBuild() for arguments
我正在尝试使用新的 android studio 2.2 将 ndkBuild 功能集成到现有的 android studio 项目中,以启用 c++ 调试等。
我已经尝试了 android studio 2.2 提供的 ndk 示例项目之一,效果非常好。但是,当我尝试在我自己的项目中使用 运行 gradle 命令时,我收到此错误消息:
Error:(73, 0) 无法在项目“:core”上找到参数 [build_c6heui1f67l8o1c3ifgpntw6$_run_closure2$_closure9@4329c1c9] 的方法 externalNativeBuild()输入 org.gradle.api.Project.
按照这个描述
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"
}
}
我是不是在项目设置中遗漏了什么?
我已经在
下正确设置了 Android NDK 位置
文件 -> 项目结构... -> SDK 位置 -> Android NDK 位置
在我的 android 工作室。
还有什么我可能忘了的吗?
有没有人运行遇到过类似的问题?
非常感谢您的建议=)
我自己刚遇到这个错误。在您的根 build.gradle
中,确保 gradle 至少设置为版本 2.2.0:
所以你应该在 buildscript {...}
中有以下内容
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
}
android {
defaultConfig {
externalNativeBuild {
cmake {
arguments '-DANDROID_TOOLCHAIN=clang'
}
}
}
根据 Kun Ming Xies 回答的建议,我将 cmake
部分一分为二以消除烦人的错误:
Could not find method arguments() for arguments [-DREVISION=1.3.1] on object of type com.android.build.gradle.internal.dsl.CmakeOptions.
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'
}
}
}
我正在尝试使用新的 android studio 2.2 将 ndkBuild 功能集成到现有的 android studio 项目中,以启用 c++ 调试等。 我已经尝试了 android studio 2.2 提供的 ndk 示例项目之一,效果非常好。但是,当我尝试在我自己的项目中使用 运行 gradle 命令时,我收到此错误消息:
Error:(73, 0) 无法在项目“:core”上找到参数 [build_c6heui1f67l8o1c3ifgpntw6$_run_closure2$_closure9@4329c1c9] 的方法 externalNativeBuild()输入 org.gradle.api.Project.
按照这个描述 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"
}
}
我是不是在项目设置中遗漏了什么? 我已经在
下正确设置了 Android NDK 位置文件 -> 项目结构... -> SDK 位置 -> Android NDK 位置
在我的 android 工作室。
还有什么我可能忘了的吗?
有没有人运行遇到过类似的问题?
非常感谢您的建议=)
我自己刚遇到这个错误。在您的根 build.gradle
中,确保 gradle 至少设置为版本 2.2.0:
所以你应该在 buildscript {...}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
}
android {
defaultConfig {
externalNativeBuild {
cmake {
arguments '-DANDROID_TOOLCHAIN=clang'
}
}
}
根据 Kun Ming Xies 回答的建议,我将 cmake
部分一分为二以消除烦人的错误:
Could not find method arguments() for arguments [-DREVISION=1.3.1] on object of type com.android.build.gradle.internal.dsl.CmakeOptions.
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'
}
}
}