X86 Android与ARM Android在应用上的兼容

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

星级: 人气:1036

  • 关键词: X86 Android ARM
  • 摘要:Android本是Google联合开放手机联盟针对移动设备开发的一种其于Linux的开源代码操作系统。发行至今,在全球的市场份额跃居首位。在2011年,近几年致力移动端的Intel也宣布在其移动系列ATOM上支持Android系统。至此,就出现了X86Android和ARM Android。相对于ARM来说,Intel进入手机和平板市场的时间要晚一点。很多人担心其无法执行针对ARM优化的应用程序。

X86 Android与ARM Android在应用上的兼容_第1张图片

  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++)。

  X86 Android与ARM Android在应用上的兼容_第2张图片

  由于经过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里面只剩下少部分程序不能使用。

你可能感兴趣的:(Java/Android)