AndroidStudio Jni开发-生成多个so库
jni开发-生成多个so库
本文介绍如何使用CMakeLists生成多个so,依赖多个第三方so库。
生成多个so库
添加要生成的so。
如上图要生成两个名为:libpciesdf.so、libpciexdm.so,添加要生成的so库名称使用add_library。add_library说明:
(一)添加生成的so库名称:“pciesdf”、“pciexdm”。(二)设置库的加载方式。
STATIC表示静态的.a的库。 SHARED表示.so的动态库库。(三)源文件的相对路径。
实现代码。 tool.c:工具类,sdfapi.c:生成libpciesdf.so的实现源码,xdmapi.c:生成libpciexdm.so的实现源码。添加源目录
源码和头文件都放在了cpp目录下。
引入第三方动态库
添加要引入的第三方动态库名称
libpciesdf.so的实现源码中需要引用libtsrs10.so,libpciexdm.so的实现源码中需要引用libxdm10.so。
添加要引入库的名称,指定so所在目录。
使用add_library添加引入的第三方库的名称。STATIC表示静态的.a的库。 SHARED表示.so的动态库库。
使用set_target_properties,设置要连接的so的相对路径。
${CMAKE_SOURCE_DIR}:表示CMake.txt的当前文件夹路径。
${ANDROID_ABI}:编译时会自动根据CPU架构去选择相应的库设置要链接的库文件的名称
CMakeLists.txt全部代码:
# Sets the minimum version of CMake required to build the native library.#cmake_minimum_required(VERSION 3.4.1)
cmake_minimum_required(VERSION 2.8.12.2)#生成的so库在指定路径
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/jniLibs/${ANDROID_ABI}) #指定路径#动态方式加载 STATIC:表示静态的.a的库 SHARED:表示.so的库。
add_library( # Sets the name of the library.pciesdf#生成的so库的名称# Sets the library as a shared library.SHARED# Provides a relative path to your source file(s).tool.csdfapi.c)add_library( # Sets the name of the library.pciexdm#生成的so库的名称# Sets the library as a shared library.SHARED# Provides a relative path to your source file(s).tool.cxdmapi.c)add_library( # Sets the name of the library.pcieukey#生成的so库的名称# Sets the library as a shared library.SHARED# Provides a relative path to your source file(s).tool.cUkey.c)#添加源码目录
target_include_directories(pciesdf PRIVATE ${CMAKE_SOURCE_DIR}/cpp)
target_include_directories(pciexdm PRIVATE ${CMAKE_SOURCE_DIR}/cpp)
target_include_directories(pcieukey PRIVATE ${CMAKE_SOURCE_DIR}/cpp)#引入第三方动态库#动态方式加载 STATIC:表示静态的.a的库 SHARED:表示.so的库。
add_library(pcietsrs10 SHARED IMPORTED)
#设置要连接的so的相对路径 ${CMAKE_SOURCE_DIR}:表示CMake.txt的当前文件夹路径 ${ANDROID_ABI}:编译时会自动根据CPU架构去选择相应的库
set_target_properties(pciesdf PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/libtsrs10.so)#动态方式加载 STATIC:表示静态的.a的库 SHARED:表示.so的库。
add_library(pciexdm10 SHARED IMPORTED)
#设置要连接的so的相对路径 ${CMAKE_SOURCE_DIR}:表示CMake.txt的当前文件夹路径 ${ANDROID_ABI}:编译时会自动根据CPU架构去选择相应的库
set_target_properties(pciexdm PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/libxdm10.so)#动态方式加载 STATIC:表示静态的.a的库 SHARED:表示.so的库。
add_library(pciexdja SHARED IMPORTED)
#设置要连接的so的相对路径 ${CMAKE_SOURCE_DIR}:表示CMake.txt的当前文件夹路径 ${ANDROID_ABI}:编译时会自动根据CPU架构去选择相应的库
set_target_properties(pciexdm PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/libxdjakey.so)#默认配置项,不用修改
find_library( # Sets the name of the path variable.log-lib# Specifies the name of the NDK library that# you want CMake to locate.log)#设置要链接的库文件的名称
target_link_libraries( # Specifies the target library.pciesdf# 引用的第三方库pcietsrs10# Links the target library to the log library# included in the NDK.${log-lib})#设置要链接的库文件的名称
target_link_libraries( # Specifies the target library.pciexdm# 引用的第三方库pciexdm10# Links the target library to the log library# included in the NDK.${log-lib})#设置要链接的库文件的名称
target_link_libraries( # Specifies the target library.pcieukey# 引用的第三方库pciexdja# Links the target library to the log library# included in the NDK.${log-lib})
AndroidStudio Jni开发-生成多个so库相关推荐
- AndroidStudio jni开发入门及打包so库和jar包
AndroidStudio jni开发入门及打包so库和jar包 配置ndk开发环境 下载NDK,LLDB,CMake工具包 配置系统环境变量 在原有项目中进行jni开发环境配置 Androidstu ...
- Android JNI开发生成.h头文件问题(转)
在JNI开发中,首先要将建立的anroid类编译成.h文件,编译用到命令javah,由于第一次用,以前对java的编译过程也不怎么了解,所以走了好多弯路,网络没有对这一步的详细介绍,这里讲一下: 通过 ...
- androidstudio jni开发_初识NDK开发(一)
" 前言:初学逆向 请多多指教 昨天在看雪论坛发了篇文章,被标记了优秀,不由得感叹 这一个月没有白学! 剩下还有11个月 冲了" 学习到的内容 - 1.了解了什么是NDK,以及在a ...
- androidstudio jni开发_高考失利落榜,7年Android开发现已年薪60w,我的逆袭之路想说给你听...
今天是高考的日子,首先祝愿所有高考学子都能金榜题名.旗开得胜. 大学的目标 这篇文章,想讲讲我的一些经历故事,如果你想入行编程.或者在一两年编程经验的迷茫时期.相信这篇文章可以给你带来帮助. 回想7年 ...
- android studio jni 开发生成.h
命令: D:\AndroidStudioProject\testJNI\app\src\main\java\com\example\binbin\testjni>javac myJNI.java ...
- JNI开发笔记(六)--一种更规范的so库生成方法
一种更规范的JNI工程写法 引 前言 1. MainActivity中的两个重要的语句 2. 建立Util类来替代MainActivity 3. 在MainActivity中验证JNI工程并生成so库 ...
- 安卓 jni 开发 —— Android Studio 打包 so 的坑
博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 安卓开发坑无限 我心依旧,不变 向前 jni 开发的坑 这两天要搞安卓下的串口读写,这块涉及到了 jni 开发,我找了两 ...
- 鸿蒙so系统,鸿蒙手机版JNI实战(JNI开发、SO库生成、SO库使用)
鸿蒙JNI开发现状 现阶段,不仅鸿蒙JNI相关的开发资料较少,而且Phone相关的JNI开发资料几乎没有,这对于新入行的鸿蒙开发者们来说,非常不友好. 也可能会给Android工程(使用了SO库的工程 ...
- JNI开发笔记(七)--aar库的生成和调用
aar库的生成和调用 引 前言 1. 新建一个空工程 2. 新建一个Module 3. 移植JNI工程到Module中 4. 生成aar库与so库 5. 在另一个工程中调用aar库 引 JNI开发笔记 ...
最新文章
- MySQL库目录下db.opt文件的作用
- oracle之 变更OS时间对数据库的影响
- 如何快捷配置java路径_eclipse常用快捷设置
- java线程池参数含义
- 微软所谓的无人工介入的自动的机器翻译系统
- matlab regionprops区域属性信息
- c# 无损高质量压缩图片代码
- sf | 空间矢量对象的几何信息处理方法
- 定义一个工资变量c语言,《工资管理》c语言程序设计.doc
- 【Research】Accounting-会计
- 施耐德M241 plc与IAI伺服电缸通过ethernet/ Ip通讯,plc与伺服套装,送软件和资料
- c语言思维导图(学习笔记)
- 嵌入式Linux设置开机自动运行程序(基于BusyBox init)
- 【视角】限贷传闻横扫楼市 专家看空房地产业
- Wordpress限制游客访问权限(免插件) 实现禁止游客访问功能
- QT构建编译出现错误error: undefined reference to 的解决办法
- 2021年深圳市产业发展与创新人才奖申报条件及材料
- C# Action 使用
- Android应用程序的开发
- luna服务器维护,luna洗脸仪发霉怎么办 日常使用完要保持干燥
热门文章
- LoRa节点ABP入网方式怎么样
- 让Kodu动起来---Kodu少儿编程第五天
- 【香橙派4B】1、重刷系统
- [Canvas系列]Canvas简单线条绘制_02
- kallsyms_lookup_name使用简介
- 小酷智慧地图3D导览v1.0.87打卡定位 地图打卡
- 中级会计 科学计算机,听说中级会计机考系统计算器你还不会使用?还不快点关注...
- 计算机操作系统——(第四章) 存储器管理/内存管理
- 【解惑】女生适合干计算机什么方面的工作
- 通过nodejs 服务器读取HTML文件渲染到页面