从接触MAT到现在也有一年多了,从一开始的酷安评论区到禁用服务吧到MAT BBS在到现在的LetITFly BBS。自己也成长了不少,自己在写禁方案的时候也会思考很多,今天既是为自己总结一下也能够给大家了解一下,当我在写方案时,我在思考什么。
应用的选择与下载
不管是什么方案总得有个对象吧。
应用的选择
我首先会选择自己使用频率较高的应用,这对于方案的维护和禁用各组件可能会出现的问题。都比较有利,毕竟自己经常都在用。
在使用频率较高的应用中,我会选择大公司出的应用。这方面我也不是溺爱独立开发者出品的应用,而是大公司出的应用普遍都比较臃肿。也许对他们来说,删除一个组件十分的麻烦,而添加一个组件对他们来说成本较低吧。
应用的下载
由于国内安卓生态圈的现状,不少应用的官网下载的版本,还不如各类第三方应用市场分发的版本高。
由于各类同行的衬托,应用市场我会优先考虑酷安。目前国内不少大公司出的应用,也都有上架Play商店,相对于国内分发的版本。Play版一般都只是不带应用内更新。考虑到使用Play商店下载应用门槛较高,部分应用我也会在方案页贴出我提取的APK文件。并提供MD5用于校验文件的完整性。
禁用思路
一个方案是否优秀,很大一部分都取决于禁用思路。
推送服务
推送服务的存在就是为了能够使用户能够即时收到消息提醒,国内的推送服务生态对开发者极其不友好,所以也到导致了一个应用可能会同时使用多个第三方推送服务。第三方推送服务为了保持自己能够即时收到消息,也就会拼命唤醒自己的服务。
当A应用启动时它使用的的推送服务发现了B应用的同款推送服务后台被杀掉后,它就会主动的使其唤醒。
国内众多推送服务都是这样让自己存活,当然了在实际境况下可不止A应用和B应用这么简单。你的手机应用越多,唤醒的对象也就更多,不同的推送服务也会更多。在这样的情况下,设备的耗电情况的确可以和应用数成正比。
有了这样的情况,就需要权衡该方案在是否需要应用的推送服务。
在不需要推送服务的情况下,服务方面可以展开全名搜索带有Push、Notification
全部禁用。广播方面你可以选择全部禁用,但是对于需要在状态栏常驻的应用你可能需要单独解禁部分广播。由于我还没遇到过禁用广播,导致状态栏功能无法使用的应用。这里也就不做展开了。
在需要推送服务的情况下,反之你需要保留带有Push、Notification
相关服务及广播,你可能还需要保留它的各类自启服务及广播。你可以通过MAT侧滑栏中的第二项广播接收器
中的事件
来查看。
功能性服务
XX功能是什么服务啊?为什么禁用了过后XX就用不了了啊?这也是很多人在禁用服务后的问题。
一个体量巨大应用在没有相关开发文档的情况下,只能通过关键字来获取很少的相关信息。很多时候,无法将一个具体的功能对应到服务上。一般情况下,我会使用排除法进行简单的判定。
在应用中打开你想要知道对应服务名的功能,然后通过写轮眼看标为蓝色的服务结合“正在运行的服务”观察什么服务在运行。然后通过禁用单个服务,一个一个排查。
当你看过一定量的方案后,其实也可以通过经验来判断。比如:
在一个非阿里系的软件,展开全名看到了AliPay那这个服务很大几率是用于调用支付宝的支付服务。
同时在你面对一个服务无从下手的时候,通过Google搜索服务全名可能会有意外惊喜。比如:
在我编写饿了么方案时,测试了很多功能都不知道CmbService到底什么来头。但是通过Google该服务全名,就找到了这个服务的主人。
相信我,论坛搜索和Google永远都是能够在任何时候,回答你任何问题的。
毒瘤服务
毒瘤这个定义本身就是比较主观的,所以我个人对毒瘤服务的定义如下:
- BAT相关服务
- 应用内更新服务
- 会导致不同应用链式唤醒
- 私自读取/上传用户隐私信息
- 长时间占用大量RAM且在应用在最近任务划掉后依然不退出
在我面对毒瘤服务,更多时候我会主观的判断服务是否应该被禁用。当然了要判断什么是毒瘤服务,也是最简单的。首先通过“正在运行的服务”查看RAM占用量和已运行时间,其次就是通过绿色守护观察唤醒方式及状态。
很多时候,你可以通过展开全名。查看应用包名与服务的公司名和项目名称是否一致。不一致的服务,很多时候都与应用本身的功能无关。
活动
活动在绝大部分时候都不会自己启动,而是固定在某个位置或某个操作后出现。而且可以通过MAT自带的显示当前Activity功能,来判断当前显示的什么Activity。
最明显的就是ADActivity
,一般都是Google AdMob的应用内嵌广告Activity。一般情况下禁用后都会导致本身显示广告的地方,显示了一个黑框。反而比广告更加的显眼,对于独立开发者的应用你大可忍受一下,因为独立开发者想要生存下去也是需要资金的。
对于Activity的禁用,我个人的看法就是。当你知道Activity对应的是什么,同时确定你真的不需要这个东西,你便可以禁用。如果你的时间较宝贵而且不想折腾太多,我建议你不要对Activity进行禁用,因为它对于你手机性能甚微.....
排版
方案写出来就是让别人看的,如果可读性很低。那么这就有违于我写方案的初衷。
我认为排版就是提高阅读率,对于提高方案的阅读率我会刻意:
- 将重要的信息放置文章首部
- 同一所有已发布方案的风格
- 字体样式及大小不超过三种
关于这一节更多信息可以查看以下两篇文章,相信我,这会让你在内容创作上受益匪浅。
愿大家都不再需要MAT。
本文采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。转载或引用该文时需要注明作者署名及该文链接。 如果您再混合、转换或者基于本作品进行创作,您必须基于与原先许可协议相同的许可协议或使用兼容协议分发您贡献的作品。例外的是在LetITFly旗下网站的转载及引用无需注明署名及出处。