x86架构的cpuCPU的安卓机为什么玩部分

内容字号:
段落设置:
字体设置:
精准搜索请尝试:
Intel芯的手机兼容性为啥那么差?
来源:作者:-责编:远洋
最近想换手机,看上了华硕的zenfone2,但是看了购物评价发现很多软件都闪退,包括网银,现在intel的手机到底适不适合买?手机是否适合,小编无法给出太多建议,还是说回兼容性的问题吧,x86架构的手机同ARM架构的手机相比,的确是存在兼容性的问题,虽然相比于几年前x86架构的手机来说,现在的手机在兼容性方面已经有了很大的改善,不过兼容性依然是x86架构的手机最大的软肋,比如很多大型游戏,采用Intel处理器的手机运行起来都会存在一些问题。其实究其原因,兼容性问题主要是因为指令集的不同,x86使用的是SSE指令集,而ARM使用的则是NEON指令集,两者的差异导致了部分应用不兼容。大部分应用都使用基于Dalvik Java的代码开发。理论上,由于Dalvik代码在系统的虚拟机中执行,在x86的ATOM平台上不会有性能损失。其实支持Dalvik的程序还是占大多数的,但因为虚拟机性能有限,在需要更高的性能或者需要硬件的支持的时候,仍然会有一些应用绕过Dalvik。比如一些对硬件性能有较高要求的大型游戏,以及一些结合了感应器或者电源管理等硬件相关的应用。谷歌允许开发者使用原生的C语言代码。而原生代码是针对硬件平台编译,x86、ARM或是MIPS都有其相应的二进制文件。通常来说,针对ARM平台编译的二进制代码,x86的处理器是无法直接运行的。而主流的安卓产品均采用ARM处理器。这也是为什么早期大部分赛车游戏都无法在Intel处理器的手机上完美运行的原因。而尽管很早之前,Google的Android NDK就引入了x86编译的选项,理论上来说,开发者只需在应用中支持这个NDK,应用在提交时会自动生成2个App,设备在下载时会根据自己的架构下载合适的App。这种方法并不难,效果也最好,难的是如何让众多开发商甘愿合作,所以我们看到,即便Intel处理器的手机已经推出几年了,但至今还是有相当一部分应用只针对ARM平台进行了编译,这也就导致了如今x86架构安卓平台的兼容性依然存在问题。说到这儿,可能有些朋友会表示怀疑,说曾经看到过Intel处理器的手机玩3D赛车游戏,这又如何解释呢?其实很好理解,正是因为兼容问题严重,使英特尔急于找出一个解决方案,所以他们开发了一种转换技术“Houdini”。“Houdini”相当于一个中间层,可以让原本不兼容的应用跑在x86上。但这种强行结合的技术运行起来往往效率不高,容易出问题,且会增加耗电量。此前曾有媒体对这种转换技术的效率进行过详细的测试,结论是二进制转换相比原生执行x86代码,损失的性能很可观,在性能诉求的应用中,损失可高达50%以上。在一些游戏类应用中,也会带来约400mW的CPU功耗的增加。可见即便过了这么多年,x86的Android之路还是很漫长,恐怕最重要的原因还是因为此前Intel固执的玩高端,导致x86架构的手机市场占有率过低,好在目前来看,已经出现了千元级Intel处理器的手机,随着市场占有率的增加,相信x86架构的Android系统会更大的引起开发者的注意,这样也能够调动开发者的积极性,不管怎么说,Intel处理器的手机的未来还是值得期待的,前提是还要给它一些时间。
大家都在买
软媒旗下软件:
IT之家,软媒旗下科技门户网站 - 爱科技,爱这里。
Copyright (C) , All Rights Reserved.
版权所有 鲁ICP备号Android手机&架构需知
1. android系统是底层运行库文件是C/C++编写的,生成的.so文件,主要包含以下内容:
l &标准C/C++库Bionic;
l &C语言工具库libcutils;
l &init进程;
l &shell工具;
l &C++工具库libutils。
2. ABI()应用程序二进制接口,用于定义不同形式的 与系统之间进行交互的规范。一个ABI对应一种与系统交互的规范形式。
ABI可以实现的功能:它描述了应用程序与OS之间的底层接口。ABI涉及了程序的各个方面,比如:目标文件格式、数据类型、数据对齐、函数调用约定以及函数如何传递参数、如何返回值、系统调用号、如何实现系统调用等。
.so文件是二进制格式,是有区分的。它针对不同的系统架构,需要使用不同的应用程序二进制接口(ABI-Application-Binary-Interface)格式进行与系统之间交互。
&安卓现在的架构有7中:Android系统目前支持以下七种不同的CPU架构:ARMv5,ARMv7
(从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64
(从2014年起),每一种都关联着一个相应的ABI。
4. 对应android系统而言,.so二进制文件与ABI的关系:
| 应用程序二进制接口(Application Binary
Interface)定义了二进制文件(尤其是.so文件)如何运行在相应的系统平台上,从使用的指令集,内存对齐到可用的系统函数库。在Android上,每一个CPU架构对应一种ABI规范(即对应一种类型的.so二进制文件格式):armeabi,armeabi-v7a,x86,mips,arm64-v8a,mips64,x86_64。
因此,7种cpu架构的android系统,对于同一项针对android系统的技术而言(eg:mupdf,),需要对应7种不同规范下编译的.so的二进制文件才能在与其对应CPU架构的android系统上运行.
5. 32位和64位的cpu 和 系统的相关介绍:
|&64位处理器的概念
64位数指的是CPU的通用寄存器的数据宽度为64位,可以运行64位指令集,这样就让CPU可以拥有64位宽度的比32位多一倍的数据总线,支持整数的64bit宽度的算术与逻辑运算。也就是说处理器每次都可以计算64位的二进制数据,比32位快一倍。
|&总之64位安卓手机真正实用,需要64位CPU、64位安卓系统、针对64位系统优化的APP应用三者的配合方能真正提升运算效率,提升手机性能。
6.操作系统和CPU指令集的关系:
| CPU指令集可以移植到任意操作系统,只要操作系统对其进行了支持即可。
&cpu指令集来决定应用程序与系统交互的规范,决定了应用程序的支持类型。
cpu指令集取决于cpu的体系架构,目前16年android的体系架构有上述的7种,而不同的操作系统支持的cpu的指令集也会不一样,eg:一般32操作系统就不会支持64位的cpu指令集。
所以即有了上一句话:64位的安卓手机的高效基于:其64位的操作系统&--&64位的cpu指令集&--&针对64位优化的application应用程序。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。手机CPU科普 ARM构架与X86构架的优劣对比(3)
我的图书馆
手机CPU科普 ARM构架与X86构架的优劣对比(3)
【ARM构架与X86构架的优劣对比】试水首作:全球第一款X86构架的智能手机
既然要进军移动芯片市场,并且期望能快速占领位置,那么英特尔就必须尽快推出实实在在的产品。同年CES展会上,英特尔正式亮相旗下首款试水产品——联想K800,这款手机联想与英特尔合作开发的Android智能手机,同时也是全球第一款基于英特尔芯片的x86架构手机。
PS:在2012年,还有另一种说法,传闻真正的全球第一款英特尔手机是XoloX900,由印度移动设备制造商Lava International生产。
联想K800是全球首款X86构架、英特尔芯片智能手机
联想K800做为全球首款X86架构的智能手机,它硬件配置在2012年是非常强劲的,搭载4.5英寸大屏幕、720P分辨率;装载英特尔Z2460单核处理器、主频1.6GHz、1GB RAM、16GB ROM;预装Android2.3操作系统、后续升级到了Android4.0;双摄像头,前置130万、后置800万像素摄像头、配有双LED补光灯。
虽然联想K800只是英特尔进军手机市场的试水产品,但从硬件配置和整体性能来看,这款产品绝对是极具英特尔的诚意之作。
【ARM构架与X86构架的优劣对比】联合多家厂商,打响移动芯片反击战
在首款X86构架智能手机获得行业认可后,英特尔终于开始打响移动芯片的反击战。它不仅在短短的一年时间里,发布了多款针对移动平台研发的处理器芯片,同时还联合国内外的多家终端厂商,推出了十多款采用最新英特尔处理器芯片的智能手机和平板,其中包括了联想、中兴、华硕、宏碁、三星、摩托罗拉等。
已经发布的英特尔芯片智能手机
从2012年1月到2013年1月,已经有10款采用英特尔处理器的智能手机发布,并且在全球20多个国家开卖。以上只是笔者在1月份收集的数据,现在全球估计已经发布超过了20款产品。
中兴GEEK 即将上市的英特尔智能手机
除了已经上市的以为,还有很多还未正式发布的英特尔智能手机。比方说,中兴通讯就于今年3月份对外表示,会在2013年推出多款搭载英特尔移动处理器的智能手机。以上图片则是中兴即将在7月10日发布的手机新品——Geek。
中兴Geek的基本信息,采用5.0英寸720×1280分辨率的高清屏幕,装载英特尔x86架构的Z2580处理器、主频高达2.0GHz、GPU是PowerVR SGX 544MP,前置120万、后置800万像素主摄像头,搭配了1GB的RAM运行内存,支持Micro SD卡扩展,系统预装了Android 4.2.2版本。
【ARM构架与X86构架的优劣对比】英特尔在移动市场将面临的对手
通过以上分析,我们可以清楚的了解到,英特尔不仅开始大举进军移动手机市场,同时还联合了多家终端厂商,准备在移动领域打一场反击战。那么,既然要打仗,最起码要了解一下对手的情况,接下来笔者将为大家介绍一下英特尔在进军的过程中会面临什么样的对手。
对手1:美国高通 骁龙出击
美国高通公司 骁龙移动处理器
简介:骁龙(Snapdragon)是美国高通公司(Qualcomm)推出的高度集成的 “全合一”移动处理器系列平台,分别覆盖入门级智能手机乃至高端智能手机、平板电脑以及下一代智能终端。Snapdragon以基于ARM架构定制的微处理器内核为基础,结合了业内领先的3G/4G移动宽带技术与强大的多媒体功能、3D图形功能和GPS引擎。
特点:性能强劲、研发技术领先、产品线较为丰富、知名度较高
对手2:联发科技 平民英雄
联发科技 MT系列处理器
简介:台湾联发科技股份有限公司(MediaTek.Inc)是全球IC设计领导厂商,专注于无线通讯及数字多媒体等技术领域。联发科技提供的芯片整合系统解决方案,包含无线通讯、高清数字电视、光储存、DVD及蓝光等相关产品,市场上均居领导地位。
特点:价格平民化、占据了千元智能手机大部分的市场
对手3:视觉巅峰 英伟达Tegra系列
英伟达Tegra系列处理器
简介:Tegra是NVIDIA公司于2008年推出的基于ARM构架通用处理器品牌(即CPU,NVIDIA称为“Computer on a chip”片上计算机),能够为便携设备提供高性能、低功耗体验。从2008年至今,英伟达已经推出了1、2、3、4四个系列产品,其中Tegra 3系列在2012年受到了广大消费者的认可。
特点:图形运算性能强大、采用4+1核心设计
本章小结:英特尔的对手不仅仅只有这些!
TA的最新馆藏[转]&android多cpu架构适配开篇
时间: 20:59:24
&&&& 阅读:498
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&简介:做项目的时候经常会使用到so文件。例如使用高德地图,其SDK中就包含了armeabi、armeabi-v7a、arm64-v8a、x86等其他文件夹,里面通常放着同样名称、同样数量的so文件。实际使用过程中,关于这些so文件引发的问题确实不少,也不好解决。写下此文,希望以后遇到相关的问题,能有个大概的思路。名词解析:&&&&NDK:Native Development Kit&&&&JNI:Java Native Interface&&&&ABI: Application Binary Interface 应用二进制接口Android Studio使用so库1、使用和eclipse一样在libs目录下新建armeabi目录的方式需要在build.gradle中添加指定jni库目录的语句sourceSets {& &main.jniLibs.srcDirs = [‘libs‘] //指定libs为jni的存放目录}2、使用AS默认的位置:src/main/jniLibs直接在src/main/下新建jniLibs目录,将armeabi等目录放到该目录下即可备注:AS可以直接右键新建同目录下的jniLibs目录,但该目录不是编译好的库文件目录,而是未编译的本地代码文件的目录(这里指的是与java同级的jni目录,放置cpp代码的)android支持的cpu架构(目前是七种)armeabi第5代 ARM v5TE,使用软件浮点运算,兼容所有ARM设备,通用性强,速度慢armeabi-v7a第7代 ARM v7,使用硬件浮点运算,具有高级扩展功能arm64-v8a第8代,64位,包含AArch32、AArch64两个执行状态对应32、64bitx86intel 32位,一般用于平板x86_64intel 64位,一般用于平板mips少接触mips64少接触安装时的兼容性检查:& &安装到系统中后,so文件会被提取在:data/app/com.xxxxxxxx.app-x/lib/目录下(5.0版本)、/data/app-lib/目录下(4.2版本),其中armeabi和armeabi-v7a会生成arm目录,arm64-v8a会生成arm64目录。& &安装app的时候,如果app使用了so文件,而不存在适合本机cpu架构的so文件,会报如下错误:Installation failed with message INSTALL_FAILED_NO_MATCHING_ABIS.例如:在x86模拟器上就必须有x86版本的so文件夹。不然无法安装成功。运行时的兼容性检查:1、检查目标目录下是否存在的so库文件2、检查存在的so文件是否符合当前cpu架构。& &对于情况一,一般规避的做法是:保证jnilibs目录下x86、x84_64、armeabi、armeabi-v7a、arm64-v8a等目录下的文件名称数量是一致的。& &例如:项目中使用了A、B、C三个第三方库。其中A、B提供了armebi以及arm64-v8a版本的库文件,而C只提供了armebi、armebi-v7a版本的库文件。这时候只能够删除原有的arm64-v8a目录,保留armeabi目录,一般arm64的手机都能兼容使用armeabi版本的库。或者复制一份armeabi的so文件到缺少的目录中(推荐)。生成so文件:& &NDK交叉编译时选定APP_ABI := armeabi x86 ...可以生成支持相应芯片的so文件。APP_ABI := all生成支持所有芯片指令集(目前七种)so文件。Android加载so文件规则:& &当你只提供了armeabi目录时,armeabi-v7a、arm64-v8a架构的程序都会去armeabi里寻找,而当你同时也提供了armeabi-v7a、armeabi-v8a目录,而里面又不存在对应的so库时,系统就不会再去armeabi里面寻找了,直接找不到报错。其他平台也是如此。这里我踩了不少的坑,切记。& &一般来说,一些比较有名的第三方库都会提供armeabi、armeabi-v7a、x86这三种类型的so文件,同时拥有这三种版本的app可以在所有机型上运行。另外,越来越多的SDK会同时提供arm64-v8a版本。只包含armeabi的项目也可以在所有设备上运行。现实案例:& &我的项目中使用了armeabi、arm64-v8a两种类型,而当我需要使用某语音第三方库的时候,发现只提供了armeabi、armeabi-v7a两种类型的so文件,而我的手机是arm64-v8a的。所以只会使用arm64-v8a里面的so文件,当使用到该语音库时找不到对应的so库,就会报错。理论上有以下两种解决方法:一、删除所有arm64-v8a,只保留armeabi,全部使用兼容性最高的版本,但也运行速度最慢。二、将该语音库的armeabi版本的so复制到arm64-v8a中。单一so文件使用armeabi兼容版本。总结:当你使用到so文件时,保证每个子文件夹中文件名称数量都是一致的。对于只提供armeabi的第三方库,复制一份armeabi的so文件到缺失的其他目录中;或者只保留armeabi目录(不推荐)参考文档:& && && &本文出自 “” 博客,请务必保留此出处标签:&&&&&&&&&&&&&&&
&&国之画&&&& &&
版权所有 京ICP备号-2
迷上了代码!

我要回帖

更多关于 x86架构安卓软件 的文章

 

随机推荐