我需要为每一个Android ABI单独的CMakeLists.txt。我试图用产品的风味来设置的CMakeLists.txt路径。但我上运行./gradlew assembleDebug
或命令行中的任何其他gradle这个命令得到下面的错误。
找不到有关类型com.android.build.gradle.internal.dsl.ExternalNativeCmakeOptions的对象参数[的CMakeLists.txt]方法路径()。
下面是我如何设定在的build.gradle产品风味。
productFlavors {
arm64_v8a {
ndk {
abiFilters "arm64-v8a"
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
}
x86_64 {
ndk {
abiFilters "x86_64"
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
}
}
注 - 我最初命名文件为“CMakeLists_arm64-v8a.txt”和“CMakeLists_x86_64.txt”。但是,这是失败所以尝试相同的名称。
如何解决这个问题还是有解决方法吗?
不,你不能有不同的口味和/或不同的ABI路径CMakeLists.txt
,但你可以使用参数添加条件语句中的cmake的脚本,例如像这样:
flavorDimensions "abi"
productFlavors {
arm64_v8a {
dimension "abi"
ndk {
abiFilters "arm64-v8a"
}
externalNativeBuild {
cmake {
arguments "-DFLAVOR=ARM"
}
}
}
x86_64 {
dimension "abi"
ndk {
abiFilters "x86_64"
}
externalNativeBuild {
cmake {
arguments "-DFLAVOR=x86"
}
}
}
}
现在,你可以在你的CMakeLists.txt检查:
if (FLAVOR STREQUAL 'ARM')
include(arm.cmake)
endif()
但是,在你的情况,你可以依靠由Android Studio中定义的参数,而且不需要自己的参数:
if (ANDROID_ABI STREQUAL 'arm64-v8a')
include(arm.cmake)
endif()
其实,你可能不需要单独productFlavors可言,而是用拆分生产薄的APK每个ABI。