这两天,有一个关于的故事,小米提出禁止安卓手机提取APK文件,谷歌拒绝这消息很热门。
这条新闻里,据说外网上有个叫米沙·拉赫曼的推手爆料,说小米开发者意在彻底阻止安卓设备主从手机上复制APK文件。
这样做的原因是APK可能包含一些私人资源为了保障用户的安全,最好只从Google Play和可信的第三方应用市场获取APK
很多不明真相的网友看到这里直接炸了我是为了安卓免费开放的生态而来的人们喜欢它你小米居然要搞封闭生态
但实际上,我仔细查看了开发者的代码,发现它只限制了设备用户使用ADB Shell提取APK文件。
对于中国大陆的Android用户来说,这种操作并不陌生:你有一款喜欢的游戏,但是你找不到地方购买或者不想花钱购买。
所以你会去一些众包网站找这个游戏的APK,下载到手机上安装。
那么网站上的这个APK是从哪里来的呢就是那些买了游戏的用户,通过ADB Shell的方式把游戏还原到一个安装程序里
开发者的提议,说白了就是防止防盗版被破解。
还有之前的彻底阻止安卓设备主从手机上复制APK文件的本质是完全不同的因为这两行代码不会影响用户从第三方下载APK,或者手机互相传输APK并安装的操作
结果这个出发点被曲解了,搞了个大新闻,引来一大堆非议。
至于谷歌为什么不同意,原因之一就是这两行代码不那么实用。
按照国外开发者的说法,这种做法只能让普通用户止步有一定技术能力的用户,只要安装一个调试版的Android,就可以像以前一样用ADB pull提取APK
只要有一两个人安装了系统的调试版,提取了APK进行共享,那么这个保护措施就等于浪费了。
这就好比你把全世界所有住户的钥匙都没收了,但只要有一个锁匠,住户最后就能进入自己的家。
无独有偶,大部分普通用户通常不会用ADB去抢各种软件,但是这么做的都是一些级别的用户,这个代码根本挡不住这些技术党。
如果更深入的看一下这个项目下双方的留言,可以发现这场风波的本质在于双方所在的应用市场的生态差异。
小米的开发者提出,他一直觉得直接导出数据不安全,不合适,并举出那些付费下载的应用为例。
比如一个人付费了一个App之后,抢到了APK,放到各个平台上给别人下载安装,给开发者带来了巨大的损失。
但是国外的开发者认为这个事情和用户做什么没有关系那些付费的应用要检查用户是否付费了比如可以查看Google Play账号的购买记录,查看设备,查看安装程序,确定这个App是否已经付费
这是因为Google Play在海外有一个相对统一的应用市场,甚至接近垄断这种操作在外国人眼里是常识,但在中国大陆的安卓生态环境下并不适用
看看中国大陆,在这么多的应用市场中,你认为哪一个是最大真的吗恐怕很难有具体的答案
比如我去年在小米应用商店花钱买了个App,今年换了华为手机如果我抓取App安装在华为手机上,华为手机应用市场就不会有我的购买记录
不过作为安卓用户,隔年换系统是很常见的操作我明明是付费正版用户,到了华为却成了盗版用户谁能受得了
针对这种情况,中国大陆的安卓应用市场基本没有付费下载的生态,开发者也无法依靠app store来判断当前用户是否付费。
有一个完善的付费下载应用生态,对厂商,软件开发公司,独立开发者都有好处不幸的是,根本问题不是两行代码就能解决的
小米开发者从一开始就提出了自己的质疑:在开发者模式的高权限下,用户手机里的所有数据都可以被提取出来,这是一件非常危险的事情。
而且,每个人都可以通过APK看到这些数据这些数据属于用户的个人隐私,第三方不应该有这个权利,所以他用那两行代码做了一些限制
至少从表面上看,这个开发者是在考虑用户隐私但实际上,国外的开发者认为APK的内容根本不能算是私有资源,他们的代码也无法阻止真正想看这些资源的人
反正过了很久,这个提议最后还是被谷歌否决了。
表面上双方无法理解对方,但本质原因其实很简单。
说白了,这个小米开发者发起这个修改,是因为他看到了Android本身的一些问题,并一一列举了原因只是可惜这些问题在国外开发者眼里都不是问题更何况这个代码还不够好,没必要谈解决问题
实际上,保护付费应用的方法根本不是提高APK提取的门槛无论你的门槛有多高,有些专家都能跨越与其做这些事,不如想想如何为应用做一个更合理的收费验证体系