Android CMakeLists.txt不同渠道加载对应目录动态库

本文介绍了如何在AndroidJNI项目中,通过在build.gradle和CMakeLists.txt中使用productFlavors和CMake变量,实现根据应用渠道加载不同的动态库。关键步骤包括在build.gradle中定义productFlavors,设置jniLibs目录,并在CMakeLists.txt中根据`CHANNEL`变量动态链接库。
摘要由CSDN通过智能技术生成

要在 Android JNI 开发中的 CMakeLists.txt 文件中根据不同渠道加载不同的动态库,可以通过在 build.gradle 中定义 productFlavors,并为每个 flavor 指定不同的 CMake 变量,然后在 CMakeLists.txt 中根据这些变量来加载对应的动态库。

  1. 首先,在 build.gradle 文件中定义 productFlavors 并为每个 flavor 指定对应的 CMake 变量

     android {
         ...
         flavorDimensions "channel"
         
     	sourceSets {
             flavor1 {
                 jniLibs.srcDirs = ['src/main/jniLibs_flavor1']
             }
             flavor2 {
                 jniLibs.srcDirs = ['src/main/jniLibs_flavor2']
             }
         }
    
         productFlavors {
             flavor1 {
                 dimension "channel"
                 externalNativeBuild {
                     cmake {
                         arguments "-DCHANNEL=flavor1"
                     }
                 }
             }
             flavor2 {
                 dimension "channel"
                 externalNativeBuild {
                     cmake {
                         arguments "-DCHANNEL=flavor2"
                     }
                 }
             }
         }
     }
    

为两个不同的 productFlavors 定义了对应的 CMake 变量。根据不同的 flavor,会传递不同的标志给 CMake。
2. 在 CMakeLists.txt 文件中,可以根据这些变量来选择加载不同的动态库

	if (${CHANNEL} STREQUAL "flavor1")
	    set(CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES ${CMAKE_SOURCE_DIR}/../jniLibs_flavor1)
	elseif (${CHANNEL} STREQUAL "flavor2")
	    set(CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES ${CMAKE_SOURCE_DIR}/../jniLibs_flavor2)
	endif()
	
	set_target_properties(
        test# 库的名称
        PROPERTIES IMPORTED_LOCATION # 表示当前库是导入的方式
        ${CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES}/${ANDROID_ABI}/libtest.so# so 动态库的具体路径
	)

根据 FLAVOR1 和 FLAVOR2 变量的设置,选择加载不同的 native-lib 动态库。你可以根据实际情况修改加载的动态库名称和文件。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值