标题《android so打包封装.pdf》所指向的知识点主要涵盖了Android平台中,将C/C++动态链接库(so文件)封装进Java的jar包,并能够从这个封装后的jar包中加载对应的so库文件,以供项目使用。 需要了解Android的架构,Android操作系统是基于Linux内核的,它对Linux内核的进程模型、内存管理等部分进行了修改,并且对Java语言进行了一定的扩展,因此可以在Android应用中使用Java进行开发,并可以调用原生的C/C++库。这些C/C++库文件通常以so(shared object)为后缀。 当需要在Android项目中使用so库时,可以将其放置在项目的特定目录下,例如`src/main/jniLibs`目录下,并且根据不同的CPU架构,如armeabi-v7a、arm64-v8a、x86等,存放对应架构的so文件。这样的目录结构可以确保应用在不同设备上都能找到合适的so库进行加载。 但是,如果需要将包含so库的jar包分发给其他人使用,问题就出现了。因为如果直接将so文件封装进jar包,它将不再是独立的`.so`文件,此时使用`System.load()`方法加载so库将无法找到文件,因为`System.load()`期望的文件路径是相对于系统库路径的。为了解决这个问题,我们需要先将so文件从jar包中提取出来,保存为临时文件,然后再加载。但为了使得so文件可以正常地从jar包中提取,需要先将so文件重命名为`.jet`文件,即Java Encapsulated Types文件。然后将其放入源代码目录下,用以构建进最终生成的jar文件。 构建jar文件可以使用Android Studio的Gradle构建系统。具体的步骤包括在`build.gradle`文件中定义一个`Jar`类型的任务,并且使用`fromfileTree`方法指定需要封装进jar包的`.jet`文件。然后,通过点击IDE中的Make Jar按钮,编译出含有`.jet`文件的jar包。这个编译好的jar包就可以被引入到其他Android项目中使用。 在引入了封装有`.jet`文件的jar包后,就可以通过Java代码加载其中的so库。加载的原理是将`.jet`文件解压出来,变回`.so`格式的文件,再通过`System.load()`方法加载。在这个过程中,使用输入流将`.jet`文件复制成临时的`.so`文件,然后进行加载。 需要注意的是,由于Android的安全机制,将so库封装进jar包并且能够加载使用,通常只适用于应用开发者或者有权限访问so库源代码和源代码目录结构的场景。对于一般用户来说,他们只能使用官方发布版本的Android应用,这些应用的so库是经过封装并且可以通过应用内的代码加载的。 总结来说,文章中提到的知识点包括: - Android平台中so库的使用方法和文件结构 - so文件封装进jar包的必要性和目的 - so文件在封装进jar包后无法直接通过`System.load()`加载的问题及其解决方法 - 使用`.jet`文件进行so库封装,并通过修改`build.gradle`来构建含有`.jet`文件的jar包 - 在其他项目中加载封装后jar包中的so库的实现方式 - Android的构建和安全机制对于so库封装和加载的影响 以上知识点是基于Android平台和Java开发环境对于so库管理和封装的详细解析,对于开发Android应用并需要使用到本地库的开发者来说,这些信息是十分关键的。

































- 粉丝: 8
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 计算机在现代测绘技术的应用.docx
- 互联网科技IT产品宣传介绍PPT模板ppt模板.pptx
- 分解因式与互联网搜索教案设计方案.doc
- 项目管理培训及应用感受分析.docx
- office计算机二级办公软件考试-office高级应用技术元文档.doc
- 人大金仓KingbaseES企业数据库中的两种垂直分区技术详解.doc
- GIS实用技术的洪水淹没模拟及灾害评估.doc
- 新型网络技术对教师继续教育培训行业的影响.docx
- 滨海新区智慧城市建设与发展研究.doc
- 机械设计制造及其自动化专业人才培养研究与实践.docx
- 学生宿舍管理系统数据库课程研究设计doc.doc
- 论计算机网络安全与防火墙技术.docx
- 基于网络的土工虚拟仿真试验室开发.docx
- 深度学习下小学语文习作单元活动设计与思考.docx
- 运用信息化手段进行科学课导入的方法例谈.docx
- hplc体内药物分析实用技术.ppt


