gpt4 book ai didi

gradle - 无法获取类型对象的未知属性 'cppFlags'

转载 作者:行者123 更新时间:2023-12-03 04:22:53 32 4
gpt4 key购买 nike

我正在将一个项目从运行良好的旧 Gradle 版本迁移到当前版本,并且刚刚遇到一个又一个问题。大多数我用谷歌搜索过,但刚刚在这个问题上碰壁了。

Error:(20, 0) Could not get unknown property 'cppFlags' for object of type com.android.build.gradle.internal.dsl.NdkOptions.

它是 cppFlag.add下面是 NDK 的部分

我觉得它与 NDK 或 CMake 或类似的东西有关,但是我很难过,并不是真正的 Gradle 人。
我没有发布应用程序 gradle 只是因为它相当大,但如果需要可以做。

非常感谢您对此的一些帮助。
谢谢

模块 Gradle
apply plugin: 'com.android.library'

def basedir = projectDir.absolutePath

android {
compileSdkVersion=26
buildToolsVersion="27.0.3"

defaultConfig {
minSdkVersion 26
targetSdkVersion 26
versionCode 1
versionName "1.0"

ndk {
moduleName "biocore"
stl = "gnustl_shared"

cppFlags.add("-std=c++11")
cppFlags.add("-frtti")
cppFlags.add("-fexceptions")

cppFlags.add("-I${basedir}/src/main/headers".toString())
cppFlags.add("-iquote${basedir}/src/main/jni".toString())

ldLibs.addAll(["android","log","atomic","z"])
}
}

}

android.productFlavors {
create("armv7") {
ndk.abiFilters.add("armeabi-v7a")
String libsDir = "${basedir}/src/main/jniLibs/armeabi-v7a/"
ndk.ldLibs.addAll([
libsDir + "libopencv_legacy.a",
libsDir + "libopencv_calib3d.a",
libsDir + "libopencv_features2d.a",
libsDir + "libopencv_flann.a",
libsDir + "libopencv_imgproc.a",
libsDir + "libopencv_highgui.a",
libsDir + "libopencv_contrib.a",
libsDir + "libopencv_objdetect.a",
libsDir + "libopencv_core.a",
libsDir + "libtbb.a",
libsDir + "liblibtiff.a",
libsDir + "liblibpng.a",
libsDir + "liblibjpeg.a",
libsDir + "liblibjasper.a",
libsDir + "libIlmImf.a",
])
}
}

android.compileOptions.with {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}

android.dependencies {
compile 'com.android.support:appcompat-v7:26.1.0'
}

项目 Gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
repositories {
jcenter()
google()
maven { url "https://maven.google.com" }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
// classpath 'com.android.tools.build:gradle-experimental:0.11.1'


// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

allprojects {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
google()
}
}

更新
根据迈克尔斯的建议(如果我理解正确的话)我做了如下修改;
  ndk {
moduleName "biocore"
stl="gnustl_shared"

}
externalNativeBuild{
cmake {
cppFlags.add("-std=c++11")
cppFlags.add("-frtti")
cppFlags.add("-fexceptions")

cppFlags.add("-I${basedir}/src/main/headers".toString())
cppFlags.add("-iquote${basedir}/src/main/jni".toString())

ldLibs.addAll(["android", "log", "atomic", "z"])
}
}
}
}

现在我看到一个类似的问题 - 未知属性'ldLibs'
我尝试将该行移至 ndk{ block ,但得到相同的消息。
如果我将其注释掉( ldLids.addAll ),那么它会在 ndk.abiFilters 的 productFlavors block 中使用相同的消息 - 未知属性

最佳答案

在@Michael 的帮助下,我把它整理好了。

apply plugin: 'com.android.library'

android {
compileSdkVersion 27

defaultConfig {
minSdkVersion 21
targetSdkVersion 27
versionCode 1
versionName "1.0"

externalNativeBuild {
cmake {
cppFlags "-fexceptions"
}
}
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
ndk {
abiFilters "armeabi-v7a"
}
}
debug {
ndk {
abiFilters "armeabi-v7a"
}
}
}

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

}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
}

关于gradle - 无法获取类型对象的未知属性 'cppFlags',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49193947/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com