供稿:阿普奇科技股份有限公司 2015/6/17 11:47:14

星级: 人气: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在应用上的兼容相关推荐

  1. android ndk arm,Android NDK ARM构建设置可在大多数设备上运行?

    我有一些Android NDK应用程序出来了,人们抱怨我的应用程序无法在他们的手机上运行.我想知道的是哪些编译设置将支持市场上大多数(如果不是全部)ARM设备? 我的问题似乎是armeabi-v7a设 ...

  2. x86架构和arm架构_苹果Mac弃用英特尔芯片成真,ARM架构CPU真比X86香?

    苹果Mac弃用英特尔芯片成真,ARM架构CPU真比X86香? 科技圈没有秘密,传言一般都是真的.此前传的沸沸扬扬的苹果Mac弃用英特尔芯片最终尘埃落定,苹果在全球开发者大会上宣布自研芯片计划,Mac放 ...

  3. 【Android 逆向】Android 进程注入工具开发 ( 远程调用 | x86 架构的返回值获取 | arm 架构远程调用 )

    文章目录 前言 一.x86 架构的返回值获取 二.ARM 架构远程调用 前言 在之前的博客 [Android 逆向]Android 进程注入工具开发 ( 注入代码分析 | 获取 远程 目标进程 中的 ...

  4. android x86 arm64,Android 的ARM架构和X86架构

    Android开发中,在打包发布应用时会选择应用适配的cpu架构平台,在引用第三方库时也遇到根据不同cpu架构引入相应的so包.Android主要包括一下cpu架构: ARMv5 ARMv7 (从20 ...

  5. android x86还是arm,Android x86是否模拟ARM?(Does Android x86 emulate ARM?)

    Android x86是否模拟ARM?(Does Android x86 emulate ARM?) 试图找出应用程序在为ARM编译时如何在VMWare上的Android x86上工作. GUI是否在 ...

  6. Android 的ARM架构和X86架构

    简单理解 arm 架构注重的是续航能力 x86 架构注重的是性能 在目前大部分的移动设备(智能手机,平板等)和大部分的移动终端(超市消费时候刷卡的 pos 机,ATM 等)都是 arm 架构的 cpu ...

  7. ARM+Android还是 MeeGo+X86

    平板电脑将采用何种软硬件的搭配?目前的手持市场,Android在操作系统火透半边天,ARM则在硬件平台火透半边天.据了解,目前高通.飞思卡尔.Marvell.TI等欧美公司都已推出基于CortextA ...

  8. android x86 sleep,如何打开Android X86对houdini的支持

    前面的文章中介绍了如何在VirtualBox虚拟机中安装Android X86.不过,安装结束后,试了几个只有ARM版.so文件的apk程序,发现都打不开.难道是新版Android X86动态将ARM ...

  9. android 音乐视频播放器(github上十二款最著名的Android播放器开源项目)

    1.ijkplayer 项目地址: https://github.com/Bilibili/ijkplayer 介绍:Ijkplayer 是Bilibili发布的基于 FFplay 的轻量级 Andr ...

最新文章

  1. Android Studio 使用感受 错误解决
  2. NestedScrollView平滑滑动嵌套 Fling
  3. ps -aux返回超过100%
  4. linux LD_LIBRARY_PATH环境变量
  5. Java平台扩展机制#3:SLF4J怪招
  6. 20种小技巧,玩转Google Colab
  7. 警惕!这个 PowerPoint“弱点”可用于发动鼠标悬停攻击
  8. JSP 的错误调试方法
  9. PHP数组实现菜单无限极分类
  10. 如何使用Flutter开发web应用
  11. 利用python requests库在百度图库上下载图片
  12. mac电脑怎么配置adb环境变量
  13. 三阶魔方大中小魔公式_三阶魔方还原图文教程-番茄魔方
  14. DirectX支配游戏 历代GPU架构全解析
  15. fullpage插件的使用
  16. 计算机文件一点右键就内存突增,电脑内存占用忽然升高怎么解决
  17. oracle11g远程命令执行漏洞,「漏洞通告」WebLogic多个远程代码执行漏洞
  18. 谷歌浏览器自带记笔记功能
  19. 磁盘阵列柜 和存储有什么区别
  20. Shader入门实战,拳皇被击闪白特效!

热门文章

  1. 2010年3月51CTO壁纸点评活动获奖公告
  2. unity 命令模式
  3. STM32使用寄存器点灯实验
  4. 【计算机网络】网关理解
  5. 阿里云盘太小啦,所以自己动手写了一个阿里云盘的搜索引擎
  6. CQOI2016省选游记
  7. 基于ENVI软件进行图像归一化操作
  8. Photometric Stereo 光度立体三维重建(三)——由法向量恢复深度
  9. Windows 11怎么禁用Hyper-V?
  10. Android rc 文件的使用