极客公园让我们看看,你的 App 背着你都偷偷干了什么事


近期 , 小米 MIUI 的一次更新 , 引起了轩然大波 。
小米手机最新版操作系统——MIUI12 中 , 有一个叫做「照明弹」的功能 。 顾名思义 , 这个功能是要把一些之前在黑暗中的东西暴露在强光下 , 让用户一目了然 。
在「照明弹」里 , 用户可以看到某一应用「自启动」、被其他应用启动以及读取设备数据等具体行为 , 手机 App 原本不为人知的动作一览无余 。
极客公园让我们看看,你的 App 背着你都偷偷干了什么事
本文插图

MIUI12 照明弹功能部分截图 , 左侧为App自启动情况 , 右侧为App被唤醒情况 | MIUI
个别应用在后台「反复横跳」 , 频繁启动各种「全家桶」应用 , 读取用户隐私信息 , 这些问题在社交网络上引起了很多数码圈和产品圈人士的讨论 。 这些应用为什么要在后台反复刷数据?对开发厂商来说 , 自启动和读数据会带来哪些好处?普通用户又该如何防范呢?
刷用户、收数据 , APP 启动为了什么?
App 自启动其实不是什么新鲜事 , 安卓平台也赋予开发者这种能力 , 只是很多时候在商业背景下 , 这一能力被滥用了 。
要想搞明白 App 的自启动 , 首先要清楚安卓的核心 。 它是一个开放开源的平台 , 追求的是被尽可能多的设备使用 。 因此对于安卓来说 , 它想要覆盖的 , 并不仅仅是手机市场 , 像广告机、自助购票机等很多场景化的设备也是安卓的猎物 。
想要收获更多的应用场景 , 就要有足够多的接口支持 。 对于广告机等设备来说 , 开机自动进入应用程序、即插即用是刚需 , 因此安卓在设计之初就支持应用程序自启动 , 有需求的 App 只需调用 API 接口即可实现 。
安卓的本意是好的 , 但却被部分开发者用坏了 。 由于可以自启动 , 一些 App 就开始利用这个 API 接口暗戳戳地自己启动自己 , 一方面刷 DAU(日活用户) , 另一方面在后台收集数据 。
不要小看你手机里的数据 , 它们在应用程序开发商那里可是宝贝 。 地理位置、录音、通讯录、剪贴板、相册等等都是有料可挖的数据金矿 。
以打车应用为例 。 很多时候 , 为了让用户体验更好 , 平台会设置一项贴心功能 , 用户在打开 App 的同时 , 系统自动猜出用户想要去的目的地 。 比如用户早上在家附近打开叫车 App , 系统会自动推荐目的地是公司所在地 。 傍晚用户在公司附近打开 App , 系统猜测用户是要接小孩放学 , 自动推荐孩子的学校地址 。
这一功能的实现主要基于用户在平台上的交易记录 , 但如果用户的交易数据不足够多时 , 系统就需要更丰富的用户地理位置数据来预测用户的生活轨迹 。 这一问题有一个简便可行的解决方案 , 那就是每隔一段时间在后台唤醒 App , 自动收集用户的地理位置 。
又如 , 现在支付 App 都有免密支付的功能 。 用户在经常活动的位置进行小额交易 , 是不需要输入密码或者刷脸验证的 。 这背后也需要 App 定期唤醒 , 获得用户的地理位置数据 , 从而进行风险控制 。
从 App 自启动中受益的不仅仅是打车、支付这两个场景 。 事实上 , 对于大多数 App 来说 , 拥有自启动的能力都是一个零本万利的事 。 甚至为了以防哪天万一用得到 , 很多 App 在开发之初就预留了这一能力 。
一般而言 , 大公司的 App 受到更多的监管 , 会相对规范 , 自启动的目的更多是为了更好地服务用户 。 相较之下 , 一些小公司的应用程序路子会更野一些 。
比如偷偷启动麦克风监听或录音 , 或者访问相册获取隐私照片等等 。 这些用户数据会被打包售卖 , 甚至有可能被卖给黑产 。 这样一来 , 用户不仅面临着隐私泄漏的风险 , 更有可能遭受人身和财产安全的威胁 。
互相唤醒:卡顿、发热的元凶
安卓的开放带来了非常多的「玩法」 , 其中最为典型的要数 App 的双进程 。 简单的理解是 , 当用户启动 App 时 , 同时启动了这一 App 的两个进程 。 当用户关掉 App 时 , 一个进程被杀死 , 另一个仍在后台运行 。


推荐阅读