我正在尝试使用
std::function
但编译器会抛出错误
Error:(50, 10) error: no type named 'function' in namespace 'std'
我试图修改build.gradle文件
externalNativeBuild {
ndkBuild {
path "src/main/jni/Android.mk"
}
cmake {
cppFlags "-std=c++11"
arguments "-DANDROID_STL=gnustl_static"
path 'src/main/jni/CMakeLists.txt'
}
}
但它不接受path
以外的参数并引发以下错误
Error:(28, 0) Could not find method arguments() for arguments [-DANDROID_STL=gnustl_static] on object of type com.android.build.gradle.internal.dsl.CmakeOptions.
请帮助我使用
std::function
更新
感谢 @Alex Cohn 我能够配置标志和参数,现在我的文件看起来像那样
apply plugin: 'com.android.library'
android {
compileSdkVersion 25
buildToolsVersion '26.0.2'
defaultConfig {
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags "-std=c++11"
arguments "-DANDROID_STL=gnustl_static"
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
/* ndkBuild {
path "src/main/jni/Android.mk"
}*/
cmake {
// cppFlags "-std=c++11"
//arguments "-DANDROID_STL=gnustl_static"
path 'src/main/jni/CMakeLists.txt'
}
}
}
dependencies {
compile 'com.android.support:support-annotations:25.0.1'
}
答案 0 :(得分:20)
build.gradle 中有两个完全不同的块名为 externalNativeBuild (感谢Google)。
一个在 android 顶级块下,它指定本机构建脚本的路径, cmake 或 ndkBuild (但不是两者都有) )。
另一个可用于从gradle指定本机构建的一些参数。此块通常是 defaultConfig 块的子项,但也可以显示 flavor (请参阅example。
这些 externalNativeBuild 块也可以包含 cmake 或 ndkBuild 子项,但只有匹配路径的子项设置(见上文)是相关的,另一个是默默忽略的。
底线,将您的块分成两部分,并将每个块放在 build.gradle 层次结构中的正确位置。