Android so 文件
2024-09-01 16:47:34
要点
- 不同的 CPU 架构需要不同的 so 文件
- NDK平台不是后向兼容的,而是前向兼容的。
- ABI 的概念,每一个 Cpu架构对应一个 ABI(Application Binary Interface,应用二进制接口)。
- ABI 定义了其所对应的 CPU 架构能够执行的二进制文件(如 .so 文件)的格式规范,决定了二进制文件如何与系统进行交互。
- 所有的 x86/x86_64/armeabi-v7a/arm64-v8a 设备都支持 armeabi 架构的 .so 文件
- so(shared object,共享库)是机器可以直接运行的二进制代码,是 Android上的动态链接库,类似于Windows上的dll。
为什么使用so
- so 机制让开发者最大化利用已有的 C 和 C++ 代码,达到重用的效果,利用软件世界积累了几十年的优秀代码;
- so 是二进制,没有解释编译的开消,用 so 实现的功能比纯 java 实现的功能要快;
- so 内存分配不受 Dalivik/ART 的单个应用限制,减少 OOM;
- 相对于 java 代码,二进制代码的反编译难度更大,一些核心代码可以考虑放在 so 文件中。
x86 手机对 arm 的支持
值得注意的是原本 x86 架构的 CPU 是不支持运行 arm 架构的 native 代码的,但 Intel 和 Google 合作在x86机子的系统内核层之上加入了一个名为 houdini 的Binary Translator(二进制转换中间层),这个中间层会在运行期间动态的读取 arm 指令并将之转换为 x86 指令去执行。
Android 系统支持其中不同的 CPU 架构,ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起),每一种都关联着一个相应的ABI。
参考链接
本篇文章由一文多发平台ArtiPub自动发布
最新文章
- Spring MVC初始化参数绑定
- 在SQL中 给字符串补0方法
- Oracle 表分组 group by和模糊查询like
- 安卓官方ViewPager与android.support.design.widget.TabLayout双向交互联动切换 。
- nginx日志中文变成类型\xE9\xA6\x96\xE9\xA1\xB5-\xE6\x8E\xA8\xE8\x8D\x90的东西
- 编译Libgdiplus遇到的问题
- JS练习题 显示登入者相关好友
- js代码 设为首页 加入收藏
- MFC内部结构剖析
- GCD基本使用
- ASP.NET Core 实战:将 .NET Core 2.0 项目升级到 .NET Core 2.1
- [Swift]LeetCode274.H指数 | H-Index
- 题解-Codeforces1106全套
- kubernetes 实战6_命令_Share Process Namespace between Containers in a Pod&;Translate a Docker Compose File to Kubernetes Resources
- Windows上结合使用Flume和Kafka
- 小峰servlet/jsp(4)EL表达式
- ES6中的import与export对class操作相关用法举例
- Linux系统服务(daemon)(鸟哥Linux私房菜笔记)
- OpenStack之基础知识
- 【转】 UML各种线的含义
热门文章
- Java入门之File类和IO流
- 常用注解@Controller、@Service、@Autowired
- 两种高效的事件处理模型:Reactor模式和Proactor模式
- SQL SERVER数据库,按年、月、日、时、分、秒计算两个时间字段之间的间隔时间样例
- requests模块(代理)篇
- 想转行做程序员,目前想学WEB前端,想问该自学还是报培训班
- burp插件之xssValidator
- CTFd平台部署
- 01 【PMP】组织结构类型
- [Luogu1291][SHOI2002]百事世界杯之旅