Android gradle向cmakeList.txt 自定义传参实现多model编译不同库

业务场景:针对多渠道每个Flavor下面可能使用编译不同模块的NativeLib,这里可以通过gradle构建是指定一些自定义参数传递给cmakeList.txt 在cmake这中进行控制。

gradle多渠道配置:
productFlavors {
        Flavor1 {
            ...
            ...
            externalNativeBuild {
                cmake {
                    arguments "-DFLAVOR_NAME=FB"
                    abiFilters  "armeabi","armeabi-v7a"
                }
            }
        }
        Flavor2 {
            ...
            ...
            externalNativeBuild {
                cmake {
                    arguments "-DFLAVOR_NAME=YH"
                    abiFilters  "armeabi","armeabi-v7a"
                }
            }
        }
}

这里指定自定义参数格式为: -D+name=value形式。如上,-DFLAVOR_NAME=YH

在CmakeList.txt中获取使用该参数:${FLAVOR_NAME}即可获取

如果是在cmake中的if条件语句中可直接使用,不需要加 ${},如:

一般使用获取:
#打印数据便于调试
MESSAGE("----FLAVOR_NAME="${FLAVOR_NAME}if中使用获取:
if (FLAVOR_NAME STREQUAL YH)
  MESSAGE("---FLAVOR_NAME STREQUAL MMT---haha-")
  .....
  .....接下来做不同的业务
endif()
展开阅读全文

没有更多推荐了,返回首页