一、系统区别

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、在程序中添加程序异常崩溃的捕捉代码,保存到本地文件中

Android和ios的区别相关推荐

  1. Android与IOS测试区别

    Android与IOS测试区别 Android与IOS测试区别 Android与IOS测试区别 Android开源,IOS非开源. 测试工具不同(由于Android开源,IOS非开源,Android自 ...

  2. 微信扫一扫 Android 与 IOS 小区别

    wx.scanQRCode({ needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果, scanType: ["qrCode","bar ...

  3. 02、Android和iOS的区别

    1.Android和iOS系统有什么区别? 1)两者运行机制不同 iOS是沙盒运行机制: 每个程序都有自己的虚拟地址空间.所以,程序之间不能进行访问. 默认只会将应用的最后运行数据,记录在RAM里面. ...

  4. 九个角度分析对比 Android、iOS开发区别

    对于创业的人来讲,选择Android还是iOS是一个棘手的问题.有数据显示Android 的市场份额突破80%.有不少人会觉得开发者在两个平台之间的选择就更加容易,毕竟市场决定利润.但事实上并非如此. ...

  5. Android和IOS的区别和联系

    关于开发语言的历史可以参看:计算机和编程语言的发展历史 关于Android和IOS的发展历史可以参看:Android和IOS的发展历史 开发语言不同 1.IOS使用的是ObjectC和Swift 2. ...

  6. App测试中Android和IOS测试区别

    App测试中ios和Android有哪些区别呢? 1 . Android长按home键呼出应用列表和切换应用,然后右滑则终止应用: 2. 多分辨率测试,Android端20多种,ios较少: 3. 手 ...

  7. WEB测试和App测试、Android和IOS测试区别

    WEB测试和App测试:   web测试 app测试 性能测试 只需要测试响应时间 响应时间.流量测试和耗电量测试 兼容性测试 兼容浏览器,兼容IE6,IE8,chrome,firefox 兼容的是手 ...

  8. Android与iOS的区别

    物理按键 Android:独有3个物理按键的功能(菜单,主页面,返回) iOS:所有的返回上一层,主要靠页面功能实现 安装 生产环境: Android:可以通过各个手机自带的应用市场或者是第三方的手机 ...

  9. Android与iOS测试注意点

    App测试中Android和IOS测试区别 分辨率测试:   Android端种类多常见的手机分辨率:   (4:3   VGA 640480 (Video Graphics Array)   QVG ...

  10. java与ios的区别_好奇?Android与iOS究竟有什么区别?终于知道了!

    智能手机系统的发展从如今的百花齐放在到三足立鼎,而发展到了现在则是安卓与ios两家平分天下.谁的系统好用?到底是IOS好呢,还是安卓系统好呢?至今没有一个结果.那么Android与iOS到底有什么区别 ...

最新文章

  1. MySQL查询随机数据的4种方法和性能对比
  2. 如何理解Return的返回值?
  3. 时间源服务器|授时仪|GPS时钟同步系统
  4. oracle结果集过大,多重子查询/大结果集查询问题
  5. keil 查看 stm32 io波形_如何系统地入门学习stm32?
  6. Java Swing –日期选择器对话框
  7. 前端学习(2372):uni-ui库
  8. 如何生成可变表头的excel
  9. 分享一款好看的城市选择器
  10. php工程师用的到高等数学吗,学习Python解决高等数学问题
  11. pytest源码_pytest文档60pytest.main()的使用
  12. 网络操控软件兴起:思科利润率受压
  13. 传统梯度下降法面临的挑战
  14. MISC图片隐写之foremost
  15. 第十八章、ActiveX控件
  16. sqlite3数据库-常用命令
  17. 顺风车这么难搞,滴滴为何从不放弃?
  18. NUCLE0 STM32L476RGT6开发板的资料整理
  19. 通过js引入本地图片地址
  20. 美国医院权威评估体系

热门文章

  1. python爬取链家二手房楼盘数据信息
  2. 在R中进行偏相关分析
  3. 吉吉影音播放器v2.7.2.4官方版
  4. lede 内核 单 编_终于搞定,在lede官方源码编译k3固件的方法。求助变分享
  5. 【随机信号分析】实验(十三)窄带信号分析——随机信号的DSB分析
  6. 【代码规范】阿里巴巴代码规范
  7. python 算法课件_分析《Python+TensorFlow机器学习实战》PDF代码课件+《Python深度学习》PDF代码张量...
  8. C++ malloc头文件
  9. 安卓默认下载工具_安卓 | 希音音乐 一款炒鸡好用的无损音乐下载器
  10. 拖延2年的Bug,Linux 上的三星 SSD 驱动错误终于得到修复