Android发展到现在有些年头了,在智能机时代,面度苹果的快速崛起,Google选择了将Android系统开源,开源的力量让Android发展一日千里,但是,Android的开源也导致了OEM厂商定制化严重,系统版本混乱,至今还有绝大部分用户使用5.0,乃至更低的系统,这对这些用户来说,都是很大的风险,接下来,我们就来大谈Android的那点事。

为什么Android手机会卡?


很多人都会有个疑问,现在的Android手机,动不动就顶配旗舰,性能各方面并没有比iOS差,但是什么iOS就不卡顿,而Android应用就越用越卡呢?而且为什么国外越来越多人用Android而不是iOS,国外的手机就不卡吗?接下来我们就结合案例来分析一下。

  • 混乱的应用环境
    Google自2010年退出了中国市场,加上墙的原因,中国是无法正常Google服务器的,但是Android系统却因为开源和开放的原因,成为中国市场第一大移动操作系统,虽然很多国产ROM都自称OS,但是却改不了底层是Android这一现实。中国是访问不了Google服务的,因此,中国的手机出厂并不内置GMS服务,所以Google Play应用市场自然也不能使用,以至于Google一直在完善的App开发规范,规范应用的上架等,在中国的统统无效。所以才有了各中应用市场诸如豌豆荚、应用宝、PP助手、以及手机内置的应用市场等等,而各大应用市场对应用的规犯,算了,相比Google的权限收紧,这压根就谈不上有规范。
  • 混乱的推送和保活
    推送
    Google在规范Android应用的时候,推出了GCM 推送服务,这个推送服务的使用需要以下特点:
  1. 它允许第三方的程序服务端发送消息到他们的安卓设备。
  2. GCM不能保证消息的发送和消息的顺序。
  3. 手机端的程序不需要一直运行来接收消息。系统会通过Intent broadcast来唤醒程序当有新的消息到来时。当然程序需要设置适当的broadcast receiver和permission。
  4. 它不提供任何的用户界面或者其他的东西来处理消息。C2DM只是简单的把收到的原始消息传递给程序。这个程序提供了处理这个消息的方法。比如,这个程序可能抛出一个通知,显示一个自定义的界面或者只是同步数据
  5. GCM要求手机必须运行Android2.2或者更高版本并且要有Google Play Store ,或者运行具有谷歌api 的Android 2.2虚拟机。但是,你不仅限于通过Google Play Store部署你的程序。
  6. 它使用一个现有的连接用于谷歌服务。这要求用户在他们的移动设备设置他们的谷歌账户。Android 4.0.4或更高对于谷歌帐户是不要求的。
    国外的App,大部分都在Google Play上架,也都遵循了Google的开发规范,所以国外的App,像IM等等,都是使用GCM推送服务。具体说到这个GCM,你可以认为这个iOS的推送是一样的,我们都知道,iOS是没有后台应用的,应用一旦退出就停止了,但是还是能够收到通知。
    因为存在以上特点,还是由于和谐的因素,国内应用在使用推送的时候,并无法使用GCM来实现,大都是自启一个服务来解决推送问题,包括系统应用,当你打开设置--应用程序--正在运行的应用程序,你会发现有很多应用程序在后台跑,这样一来,不但拉低了整机的运行效率,而且还费电。这也是为什么大家都说,应用装的越多,手机就越卡的原因。
    小米是国内厂商中唯一一个有做推送服务的,这本来是非常好的,但是无奈,应用开发者并不是专门为小米手机开发App,接入了一个小米推送,但是解决不了其他厂商的问题。因此被开发者选择性忽略了。这也是我比较欣赏小米的原因了。
    应用保活
    应用保活其实就是为了推送而存在的,为什么需要保活呢?因为Android手机运行到内存不足的时候,会杀死一些后台的应用和服务,或者360等也会把这些服务杀死。那么杀死之后,App就无法推送消息了,那怎么办呢?保活呗。你杀归你啥,但你杀完我还能活过来。所以Android手机就成了应用保活攻防的主战场了。最典型的就是国内某大厂的全家桶系列,只要家族某一个App被打开,这个App就会集体唤醒其他家族App。还有一些会做保活的,就是360等等桌面有悬浮窗的,Android本身是没有系统悬浮窗这个接口,所以悬浮框要存在,就必须开启一个服务来维持。
    因此,为什么大家都在说Google Pixel比iOS更快,更好用的时候,你感觉不到还在那里骂娘,就是国内应用因为不管是系统服务还是第三方应用,都选择了用Service常驻来保活和做其他东西,因此,应用越多,手机越卡。国外之所以不会有这个情况,是因为国外Google已经在规范应用,不符合的应用,不允许在Google Play上架。这是由国内外应用环境差异决定的。

为什么会说不安全?


Android系统的不安全,源于开源和权限管理,每个系统在设计的时候都是会确保足够的安全的,苹果之所以安全,是因为权限收的非常紧,而Android系统相对比较宽松,一些重要的权限会交给用户自己去选择,但是有些用户对权限的概念了解并不深,只要应用请求,很多时候都会给,因此也造成了不安全。

  • Android的碎片化
    Android碎片话源于OEM厂商,这些OEM厂商为了卖更多的手机,手机卖出去后基本系统就处于不维护状态,到目前为止,Android的系统版本已经来到7.1,但是依旧有绝大部分用户在5.0及以下,Google对内核BUG的修复,安全漏洞的修复,并不能第一时间应用到Android手机上,因此才使得手机不安全。
  • 混乱的权限获取
    Google起初给开发者给权限是非常大的,基本是有求必给那种,所以开发者可以拥有很多权限,包括获取你的通讯录啊,你的使用记录啊等等。后来谷歌的权限逐渐收紧,一直到7.0,谷歌已经收紧了绝大部分权限,很多重要的权限,都是需要用户手动去授权,才允许被使用的。对于应用开发者来说,给的权限越大,就说明他能做更多的事,但是,权限越大,安全风险同时也就越高。举个例子:

手机有个权限叫“有权查看应用使用情况的权限”(很多手机会把这个选项给隐藏,如Flyme),很多应用会申请这个权限,引导用户去打开,一旦打开了,这个应用就可以知道手机使用过什么应用,使用多久等等,而且在很多手机上,一旦你打开了,想关闭时找不到的。
还有一个叫“通知读取权限”,一般在手机设置--安全中可以找到,这个权限是比较恐怖的,一旦你开启了,只要弹在通知栏上的消息,应用就完全可以拿得到,加上微信、QQ等聊天记录一般都是以内容的方式直接出现,因此一旦给予了这个权限,很可能造成信息泄露。有Root授权的应用更是可以在用户不知道的情况下偷偷去打开这个权限,360手机助手我是遇到过,我关闭了这个权限,打开360手机助手,在回去查看这个权限,发现了360自动授权了,比价可怕,所以手机尽可能不要Root。

  • 恶意程序横行
    这也是Android的开源和权限过大的造成的,Andriod的开放性,导致了Android在安装应用的时候,可以自己从网上下载,因此网上也存在很多恶意程序,专门诱导Android用户去下载。有些恶意程序可以提权,让自己拥有root权限,有了Root权限,基本等于拥有手机的控制权,比较可怕。这里还有一个案例,是一个恶意程序:

最新发现有个恶意应用,通过FileObserver去监听SD卡目录,发现有应用下载到手机的时候,立刻将其替换掉,偷偷替换成其他的APK,导致错误安装应用。因此,如果你发现了你安装的应用经常不是你所下载的应用,那么很多时候你是已经安装了某些恶意应用了。

如何应对?


  1. 现在很多的很多系统如MIUI、Flyme、EMUI等都具备了防止应用链式启动的作用,退出时,在任务管理那里一键清理后台即可。(不推荐装360、猎豹等查杀工具,查杀不如系统的不说,本身就起着多个服务和进程。)
  2. 自用的,安全性需求比较高的手机,尽可能不要Root。因为有些危险你不一定看得见。
  3. 尽可能买安全性比较高的手机,买一些厂商负责人的手机,像那些一年推出10几部手机,然后手机系统上维护不给力的,人家出到7.0还在使用5.x的手机,就不要考虑了。
  4. 慎重考虑App请求的权限。可以不给的尽量不要给。特别是那些用户权限,需要你手动去开启的,Google之所以搬出来让你选择,就是这个权限是比较重要的,需要你慎重去考虑的。
  5. 不要装某些全家桶类型的应用。

2016.11.06

更多相关文章

  1. usbmanger android 底下USB的工作模式
  2. Android5.1系统通过包名给应用开放系统权限的方法
  3. Android(安卓)root原理
  4. Mono for Android试用体验
  5. Android应用开发提高系列(4)――Android动态加载(上)――加载未安装A
  6. 彻底解决Android6.0权限管理问题
  7. Android清单文件详解(四) ---- backupAgent的用法
  8. Android(安卓)内容提供器---创建内容提供器(元素)
  9. Gartner:Android将在2012年成为第二大手机系统

随机推荐

  1. Android在指定View的下方显示PopupWindow
  2. 解析URL,获取其参数值(总结一次与H5交互用
  3. android实现对PDF进行签名、涂鸦操作
  4. Magisk与EdXposed框架安装实践(Android P
  5. 【Android(安卓)UI设计与开发】第06期:底
  6. Android一个工程引用另一个工程
  7. android读取apk中已经存在的数据库信息
  8. [Android基础系列]轻松实现按钮的鼠标悬
  9. Android周报:谷歌发布x86 64位Android(安
  10. 【Android软件】ES文件浏览器:Android资