网络知识 娱乐 Android和ios的区别

Android和ios的区别

一、系统区别

1、系统和框架结构

(1) Android系统的底层建立在Linux系统之上;而ios基于UNIX系统。
        这一点就造成了Android与iOS的生态不同了,Android完全开源,任何软件开发商或者个人都能开发安卓的软件;ios完全封源开发。

        Linux的大多数版本都开源,而Unix系统主要分为两个阵营:System V和BSD。商业版本的Unix一般属于System V阵营,通常是不开源的,如IBM的AIX系统,惠普的HP-UX系统等;而BSD阵营的版本通常都是开源的,如FreeBSD、OpenBSD等。

(2)编程语言:Android的编程语言是Java和KotLin;而ios的则为ObjectC和Swift。
        Android的Java,面向对象,性能比C语言和OC低;ios的OC,基于对象,完全兼容C语言的语法,可以直接操作内存。
        Android生成class文件,需要虚拟机来进行解释;ios直接执行程序的二进制代码。
        这也在根本上造成了iOS与Android性能不同:Android和Window一样,目的是打造一款通用性非常好的系统,在任何机器上面都可以运行;ios目的是让软件和硬件完美的结合到一块,该操作系统只能在极少数机器上面才能运行。

(3)运行机制:ios采用的是沙盒运行机制;安卓采用的是虚拟机运行机制。
        iOS采用伪后台,当用户HOME键退出应用时,IOS其实关闭了程序,只保留应用的图像入口,只会默认将最后的运行数据记录在RAM中。之所以IOS也能收到推送,是因为应用程序开启推送后,系统会增加一些进程,这些进程会从苹果服务器接收信息,然后再通过服务器发给用户,苹果服务器在这里是起到了中转的作用。
        安卓手机的后台是真后台,将应用保留在RAM中,之所以能够收到推送,也因为它常驻内存。
        所以Android在软件关闭的情况下,无法接收推送信息;ios在软件关闭的情况下,依然可以接收推送信息,iOS系统在系统内存不足时会自动释放内存。

Android:虚拟机运行机制

1、所有的应用程序都是运行在虚拟机中,用户界面其实是由虚拟机传递的,并且通过虚拟机,Android的任何程序都就可以轻松访问其他程序文件

2、所有的Android的应用程序都是运行在RAM里面的,所以会发现有时候Android用着用着就开始有点卡了

ps:补充知识,手机中的RAM和ROM,可以分别对应电脑的内存和硬盘这么理解

iOS:沙盒运行机制

1、每个程序都有自己的虚拟地址空间。所以,程序之间是都不能进行访问

2、默认只会将应用的最后运行数据,记录在RAM里面

程序后台运行机制

Android:任何程序都可以在系统后台运行

iOS:第三方程序不能在系统后台运行

2、渲染机制

(1) iOS最先响应屏幕

        IOS的UI渲染采用实时优先级,Android的UI渲染遵循传统电脑模式的主线程普通优先级

        IOS的响应顺序依次为Touch–Media–Service–Core架构
        Android系统的优先级响应层级是Application–Framework–Library–Kernal架构

        当我们使用iOS或者是Android手机时,第一步就是滑屏解锁找到相应程序点击进入。而这个时候往往是所有操控开始的第一步骤,iOS系统产品就表现出来了流畅的一面,但Android产品却给人一种卡顿的现象,更别说后续深入玩游戏或者进行其它操控了。

        这也就是为什么我们常说iOS比Android流畅了,因为iOS最先响应屏幕,iOS对屏幕反应的优先级是最高的,它的响应顺序依次为Touch–Media–Service–Core架构,换句话说当用户只要触摸接触了屏幕之后,系统就会最优先去处理屏幕显示也就是Touch这个层级,然后才是媒体(Media),服务(Service)以及Core架构。

        而Android系统的优先级响应层级则是Application–Framework–Library–Kernal架构,和显示相关的图形图像处理这一部分属于Library,你可以看到到第三位才是它,当你触摸屏幕之后Android系统首先会激活应用,框架然后才是屏幕最后是核心架构。

(2)iOS系统优先处理Touch层级
        优先级的不同导致了iOS产品以及Android手机在操控过程中的表现差异,当你滑动屏幕进行操控的时候,iOS系统会优先处理Touch层级,而Android系统则是第三个才响应Library层级,这是造成它们流畅度不同的因素之一。

        不过优先级对系统流畅性有有影响不假,但并不是最绝对的,造成两系统之间流畅性不一的现象还有其它因素。 目前智能手机硬件装备竞赛当中,其实处理器等配置已经达到了一个瓶颈期,各大旗舰产品在硬件比拼当中基本上没有太大的区别,而这时候GPU就成为了一个凸显差异的重要因素。一些大型软件像是3d游戏对GPU性能要求都会比较高,苹果iPhone产品采用的Power VR SGX系列GPU在当下来说非常的主流,跑分测试数据证明了它并不会比一些旗舰级别的Android产品差劲。

(3) iOS图形特效基于GPU加速渲染
        iOS系统对图形的各种特效处理基本上正好都是基于GPU硬件进行加速的,它可以不用完全借助CPU或者程序本身,而是通过GPU进行渲染以达到更流畅的操控表现。

        但是Android系统产品则并非如此,因为Android需要适应不同的手机硬件,需要满足各种差异配置,所以很多图形特效大多都要靠程序本身进行加速和渲染,并严重依赖CPU运算的操作自然会加大处理器的负荷,从而出现卡顿的问题。

        iOS系统对图形的各种特效处理基本上正好都是基于GPU硬件进行加速的,它可以不用完全借助CPU或者程序本身,而是通过GPU进行渲染以达到更流畅的操控表现。
Android系统产品则并非如此,因为Android需要适应不同的手机硬件,需要满足各种差异配置,所以很多图形特效大多都要靠程序本身进行加速和渲染。
(虽然Android 4.0以及4.1等更高版本中进行了改进将硬件加速设为默认开启,但依旧无法做到所有特效全部都靠GPU进行加速。在很多Android手机里面都自带有“是否开启GPU渲染”这个功能选项,不过开启之后的改善也是微乎其微。)

        屏幕最先响应的优先级关系,再加上iSO本身GPU加速程序的特性,使得在操控过程中感觉iOS手机拥有着良好的流畅性。因为它本身的整个流程都是在为最大化的流畅做服务,不管是第一印象的滑动接触屏幕,还是你进一步使用程序之后的更深层操作都是如此。而GPU加速这点特性,是它优于Android系统流畅性的又一个因素。

测试注意点

1、多分辨率测试,Android端20多种,ios较少;

2、手机操作系统,Android较多,ios较少且不能降级,只能单向升级;新的ios系统中的资源库不能完全兼容低版本中的ios系统中的应用,低版本ios系统中的应用调用了新的资源库,会直接导致闪退(Crash);

3、push测试:Android:点击home键,程序后台运行时,此时接收到push,点击后唤醒应用,此时是否可以正确跳转;ios,点击home键关闭程序和屏幕锁屏的情况(红点的显示);

4、安装卸载测试:Android的下载和安装的平台和工具和渠道比较多,ios主要有app store,iTunes和testflight下载;

5、升级测试

可以被升级的必要条件:新旧版本具有相同的签名、具有相同的包名、有一个标识符区分新旧版本(如版本号)

三、ios和android日志抓取

iOS:
1.通过 iTunes Connect(Manage Your Applications - View Details - Crash Reports)获取用户的 crash 日志
2.通过 Xcode 从你的设备上获得崩溃日志
3.自己在程序中添加崩溃捕捉代码,如果应用集成第三方 SDK,如百度统计
Android:
1.通过集成第三方 SDK,如百度统计、友盟统计等
2、发版时使用加固工具,他们也会收集错误日志,如 360 加固
3、在程序中添加程序异常崩溃的捕捉代码,保存到本地文件中