1. 程式人生 > >Android gradle向cmakeList.txt 自定義傳參實現多model編譯不同庫

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
()