X86 Android与ARM Android在应用上的兼容
星级: 人气:1036
- 关键词: X86 Android ARM
- 摘要:Android本是Google联合开放手机联盟针对移动设备开发的一种其于Linux的开源代码操作系统。发行至今,在全球的市场份额跃居首位。在2011年,近几年致力移动端的Intel也宣布在其移动系列ATOM上支持Android系统。至此,就出现了X86Android和ARM Android。相对于ARM来说,Intel进入手机和平板市场的时间要晚一点。很多人担心其无法执行针对ARM优化的应用程序。
Android本是Google联合开放手机联盟针对移动设备开发的一种其于Linux的开源代码操作系统。发行至今,在全球的市场份额跃居首位。在2011年,近几年致力移动端的Intel也宣布在其移动系列ATOM上支持Android系统。至此,就出现了X86Android和ARM Android。相对于ARM来说,Intel进入手机和平板市场的时间要晚一点。很多人担心其无法执行针对ARM优化的应用程序。
首先,不管是Google还是Intel,从系统还是硬件架构,都为了扩大市场占有额,传统老牌的PC界霸主与当下主流的移动OS强强联手,也是一种大势所趁。尤其是Windows在向ARM渗透,ARM在向服务器及个人PC侵蚀的格局中。经过多次的磨合,Intel在发布Baytrail平台时宣称完美支持Android,后续Sofia 和Cherry Trail都会支持Android。并于2014年在中国成功销售4000万台搭载Android系统的平板电脑。与此同时,阿普奇公司也在一年多时间内,成功向某公司的物联网行业售出2.2万台X86 android平板电脑,并稳定运行至今。
其次,关于应用在两个平台上的兼容与移植问题。
实际上ARM也存在兼容问题,只是大家一直没有注意:因为ARM采用授权方式,因此各家处理器集成的GPU并不相同。例如高通使用自家的Adreno、Nvidia使用GeForce ULP、三星使用ARM的Mali或PowerVR的SGX,由于GPU的规格不同(如封装格式),导致App在不同处理器中的表现差异很大。而Intel自己生产,在GPU等相关硬件上就非常统一。
我们先来了解一下Android程序是怎么运行的
最初Android程序都采用Eclipse开发环境和Android SDK,代码用Java语言写成,经过封装转换成Bytecode后加入到Android设备中,在Dalvik虚拟机中运行。不过稍微了解程序运行的人都知道,虚拟机虽然能够带来跨平台、不限硬件规格的好处,但同时也会因为代码转换降低执行效率。因此后来Android除了SDK(Software Development Kit)以外,又推出了NDK(Native Development Kit),让开发人员能够避免Dalvik转译造成的性能损失,还可以使用Java之外的程序语言编写(如C/C++)。
由于经过NDK编译之后的程序是硬件能够直接执行的机器代码,所以执行效率比较高,但同时带来了兼容性问题——编译给ARM处理器的机器代码和给x86处理器的不一样。
X86 Android与ARM Android本身都是一样Android系统,只是硬件平台不一样。从上面的Android软件运行来看,如果是用SDK编译的应用,可以在两个平台上随意切换。目前阿普奇出货给某公司的2.2万台X86Android平板电脑上所使用的APP也可在ARM平台使用。而如果是使用NDK编译的并使用了SO库,只需要编个X86版本的库就可以了。
而且针对上述的这一兼容性问题,Intel开发了Binary Translation,用来兼容针对ARM优化的应用程序。可以转换那些使用ARM NDK的应用,让它们能够在Intel处理器上正确执行。Intel官方估计约90%专为ARM编写的程序都能够在Atom上执行,也就是说整个Google Play里面只剩下少部分程序不能使用。
X86 Android与ARM Android在应用上的兼容相关推荐
- android ndk arm,Android NDK ARM构建设置可在大多数设备上运行?
我有一些Android NDK应用程序出来了,人们抱怨我的应用程序无法在他们的手机上运行.我想知道的是哪些编译设置将支持市场上大多数(如果不是全部)ARM设备? 我的问题似乎是armeabi-v7a设 ...
- x86架构和arm架构_苹果Mac弃用英特尔芯片成真,ARM架构CPU真比X86香?
苹果Mac弃用英特尔芯片成真,ARM架构CPU真比X86香? 科技圈没有秘密,传言一般都是真的.此前传的沸沸扬扬的苹果Mac弃用英特尔芯片最终尘埃落定,苹果在全球开发者大会上宣布自研芯片计划,Mac放 ...
- 【Android 逆向】Android 进程注入工具开发 ( 远程调用 | x86 架构的返回值获取 | arm 架构远程调用 )
文章目录 前言 一.x86 架构的返回值获取 二.ARM 架构远程调用 前言 在之前的博客 [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | 获取 远程 目标进程 中的 ...
- android x86 arm64,Android 的ARM架构和X86架构
Android开发中,在打包发布应用时会选择应用适配的cpu架构平台,在引用第三方库时也遇到根据不同cpu架构引入相应的so包.Android主要包括一下cpu架构: ARMv5 ARMv7 (从20 ...
- android x86还是arm,Android x86是否模拟ARM?(Does Android x86 emulate ARM?)
Android x86是否模拟ARM?(Does Android x86 emulate ARM?) 试图找出应用程序在为ARM编译时如何在VMWare上的Android x86上工作. GUI是否在 ...
- Android 的ARM架构和X86架构
简单理解 arm 架构注重的是续航能力 x86 架构注重的是性能 在目前大部分的移动设备(智能手机,平板等)和大部分的移动终端(超市消费时候刷卡的 pos 机,ATM 等)都是 arm 架构的 cpu ...
- ARM+Android还是 MeeGo+X86
平板电脑将采用何种软硬件的搭配?目前的手持市场,Android在操作系统火透半边天,ARM则在硬件平台火透半边天.据了解,目前高通.飞思卡尔.Marvell.TI等欧美公司都已推出基于CortextA ...
- android x86 sleep,如何打开Android X86对houdini的支持
前面的文章中介绍了如何在VirtualBox虚拟机中安装Android X86.不过,安装结束后,试了几个只有ARM版.so文件的apk程序,发现都打不开.难道是新版Android X86动态将ARM ...
- android 音乐视频播放器(github上十二款最著名的Android播放器开源项目)
1.ijkplayer 项目地址: https://github.com/Bilibili/ijkplayer 介绍:Ijkplayer 是Bilibili发布的基于 FFplay 的轻量级 Andr ...
最新文章
- Android Studio 使用感受 错误解决
- NestedScrollView平滑滑动嵌套 Fling
- ps -aux返回超过100%
- linux LD_LIBRARY_PATH环境变量
- Java平台扩展机制#3:SLF4J怪招
- 20种小技巧,玩转Google Colab
- 警惕!这个 PowerPoint“弱点”可用于发动鼠标悬停攻击
- JSP 的错误调试方法
- PHP数组实现菜单无限极分类
- 如何使用Flutter开发web应用
- 利用python requests库在百度图库上下载图片
- mac电脑怎么配置adb环境变量
- 三阶魔方大中小魔公式_三阶魔方还原图文教程-番茄魔方
- DirectX支配游戏 历代GPU架构全解析
- fullpage插件的使用
- 计算机文件一点右键就内存突增,电脑内存占用忽然升高怎么解决
- oracle11g远程命令执行漏洞,「漏洞通告」WebLogic多个远程代码执行漏洞
- 谷歌浏览器自带记笔记功能
- 磁盘阵列柜 和存储有什么区别
- Shader入门实战,拳皇被击闪白特效!