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

要在 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 动态库。你可以根据实际情况修改加载的动态库名称和文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/776355.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue实例的data属性,可以在哪些生命周期中获取到

Vue实例的data属性可以在beforeCreate、created和beforeMount生命周期中获取到。 在Vue实例的生命周期中,data属性在不同的阶段有着不同的可访问性: beforeCreate:在实例初始化之后,数据观测 (data observer) 和事件配置之前被调…

C语言例4-33:求调和级数中第多少项的值大于10

代码如下&#xff1a; //求调和级数中第多少项的值大于10 //调和级数的第n项为11/21/3...1/n #include<stdio.h> #define LIMIT 10 int main(void) {int n1;float sum0.0;for(;;) //死循环&#xff0c;或者while&#xff08;1&#xff09;{sumsum1.0/n;if(sum&g…

深度学习系列63:tts和智能语音助手

1. tts 使用sherpa的参考代码如下 import soundfile as sf import sherpa_onnx def write(text,output_filename,sid10,providercpu):tts_config sherpa_onnx.OfflineTtsConfig(modelsherpa_onnx.OfflineTtsModelConfig(vitssherpa_onnx.OfflineTtsVitsModelConfig(modelvit…

软件测试工作规范、流程规范

1. 制定规则 为了规范测试工作、减少开发与测试之前的沟通成本、保证项目进度、提高软件质量&#xff0c;测试组起草了这份软件测试工作规范。 1.1. 编码规范 软件程序开发需要遵守编码规范&#xff0c;一是可以减少代码的维护成本&#xff0c;提高开发工作效率&#xff1b;…

商标和品牌的区别是什么

商标和品牌是两个不同的概念&#xff1a; 商标是一个法律概念&#xff0c;指的是商家在市场竞争中使用的标识&#xff0c;可以是词、图形、数字、颜色、三维标记等。商标的主要作用是让消费者更容易地识别出产品或服务的来源&#xff0c;并保障商家的知识产权。 品牌则是一个…

【明道云】明道云主从表中计算列的即时重算问题

【背景】 使用场景下&#xff0c;往往存在一些不需要录入的计算列。但是用户希望变更计算要素时&#xff0c;相应的列也能立即重算&#xff0c;类似于Excel中公式的效果。 【问题】 通过字段默认值用函数设置&#xff0c;可以达到如上效果&#xff0c;但是在复杂场景下存在限…

广义表的深度与长度

1.广义表的长度和深度 1.长度&#xff1a;广义表的长度是指广义表中第一层所含的元素个数&#xff0c;包括原子和子表。 理解&#xff1a;广义表的长的也就是最外层的括号中包含的元素的个数 2.深度&#xff1a;广义表的深度是指广义表中括号的最大层数&#xff0c;即最大嵌套…

centos7 如何安装UI

CentOS 7 带有 GNOME 3 桌面环境&#xff0c;可以通过以下步骤启用&#xff1a; 确认系统已安装 GNOME 桌面环境&#xff1a;在终端中输入以下命令并按回车键&#xff1a; 复制 rpm -q gnome-desktop3如果输出结果中显示 "gnome-desktop3-3.x.x-x.el7.x86_64"&#…

Chrome 插件 storage API 解析

Chrome.storage API 解析 使用 chrome.storage API 存储、检索和跟踪用户数据的更改 一、各模块中的 chrome.storage 内容 1. Service worker 中 runtime 内容 2. Action 中 runtime 内容 3. Content 中 runtime 内容 二、权限&#xff08;Permissions&#xff09; 如果需使…

2024 年学习 AI 路线图

2024 年学习 AI 路线图 一、数学二、工具2.1 Python2.2 PyTorch 三、机器学习3.1 从头开始编写3.2 参加比赛3.3 做副业项目3.4 部署模型3.5 补充材料 四、深度学习4.1 fast.ai4.2 多参加一些比赛4.3 论文实现4.4 计算机视觉4.5 强化学习4.6 自然语言处理 五、大型语言模型5.1 观…

mysql 用户管理-权限表

学习了《mysql5.7安装》&#xff0c;就先再了解下用户管理&#xff0c;先了解下权限表。 MySQL是一个多用户数据库&#xff0c;具有功能强大的访问控制系统&#xff0c;可以为不同用户指定允许 的权限。MySQL用户可以分为普通用户和root用户。root 用户是超级管理员,拥有所有权…

加密技术解析:对称加密、非对称加密与国密算法

文章目录 一、对称加密1.1 综述1.2 AES 算法详解 二、非对称加密2.1 综述2.2 RSA 算详解 三、国密四、总结 在当今数字化世界中&#xff0c;加密技术在保护数据安全和隐私方面发挥着重要作用。本文将详细探讨对称加密、非对称加密以及国密算法的原理和实现&#xff0c;帮助读者…

SpringBoot国际化配置流程(超详细)

前言 最新第一次在做SpringBoot的国际化&#xff0c;网上搜了很多相关的资料&#xff0c;都是一些简单的使用例子&#xff0c;达不到在实际项目中使用的要求&#xff0c;因此本次将结合查询的资料以及自己的实践整理出SpringBoot配置国际化的流程。 SpringBoot国际化 "i…

爱思助手验机不靠谱?

1.骗子只能骗的一种人就是有点懂 因为完全不懂的不会感兴趣 骗不到 太懂的人 基本属于猴精的人 你骗不到 2. 3.基本做的是翻新机 维修过的 4。转载 爱思助手验机不靠谱&#xff1f;“报告全绿”已成奸商的阴谋 - 知乎

单片机通俗一点讲究竟是个什么东西?

单片机就是一个微型电脑&#xff0c;它是靠程序工作的&#xff0c;并且可以修改。通过不同的程序实现不同的功能。在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信…

智慧公厕四大核心能力,赋能城市公共厕所智能化升级

公共厕所是城市基础设施中不可或缺的一部分&#xff0c;但由于传统的公共厕所在建设与规划上&#xff0c;存在一定的局限性&#xff0c;导致环境卫生差、管理难度大、使用体验不佳等问题&#xff0c;给市民带来了很多不便。而智慧公厕作为城市智能化建设的重要组成部分&#xf…

(枚举类)及其实现

1.概述 枚举类型本质上也是一种类&#xff0c;只不过这个类的对象是有限的、固定的几个&#xff0c;不能让用户随意创建.例如 : 星期 : Monday Tuesday ... Sunday 三原色 : red green blue若枚举类只有一个对象&#xff0c;则可以作为单例模式的一种实现方法. 2.实现 (1…

2024年阿里云服务器8核16G配置活动价格分享,最低仅需1803.17元1年

阿里云服务器8核16G配置2024年活动价格是多少&#xff1f;具体配置还需要看想要购买的云服务器实例规格和配置及带宽大小&#xff0c;目前在阿里云2024年活动中&#xff0c;8核16G配置价格最低的是通用算力型u1实例&#xff0c;价格只要1803.17元1年&#xff0c;除此之外&#…

JAVA------基础篇

java基础 1.JDK JDK :java development kit JRE&#xff1a;java runtime environment JDK包含JRE java跨平台&#xff1a;因为java程序运行依赖虚拟机&#xff0c;虚拟机需要有对应操作系统的版本&#xff0c;而jre中有虚拟机。 当你想要在Linux系统下运行&#xff0c;则需要…

轻松管理你的热点函数!

之前&#xff0c;我们介绍了卡顿分析下的卡顿帧汇总功能&#xff0c;以便开发者能够更精准地定位和归因项目的卡顿现象。本周&#xff0c;我们将继续介绍本次版本更新的新功能&#xff0c;从函数CPU耗时、资源管理等角度&#xff0c;帮助开发者更细致地洞察项目性能问题&#x…