订阅移动开发RSS CSDN首页> 移动开发

专访豌豆荚「自动装」开发团队:无需Root即可批量点击「下一步」

发表于2015-05-25 15:00| 次阅读| 来源CSDN| 0 条评论| 作者CSDN

摘要:豌豆荚「自动装」功能利用Android提供的Accessibility机制让用户无需Root直接批量安装/升级应用。这一功能的背后,有着哪些故事和技术?是否会造成安全性隐患?CSDN专访了豌豆荚工程师李晓鹏和产品设计师程志达。

豌豆荚于日前推出了一个名为「自动装」的新功能,利用Android系统提供的Accessibility机制实现,让用户无需Root即可批量安装,而其启用方法也很简单,在系统中的辅助功能开启「豌豆荚自动装」服务便可进行批量安装/升级应用。在这一功能的背后,有着哪些故事和技术?是否会造成安全性隐患?带着种种疑问,CSDN专访了豌豆荚工程师李晓鹏和产品设计师程志达。

CSDN:请介绍一下「自动装」这个功能。

程志达:在Android上第三方应用市场如果想安装应用的话,系统就会弹出很多确认之类的提示,在这个过程当中,用户需要很多次点击,尤其在升级的过程当中,如果有十几甚至几十个应用等待升级的话,用户需要点击很多次,因为不知道下一个App什么时候能够下载完成,这是很痛苦的一件事情。「自动装」这个功能能帮助用户简化点击下一步的操作,如果要升级或安装应用的话,直接在前面点击按纽,后面的操作就可以顺利完成。


豌豆荚产品设计师 程志达

CSDN:不需Root用户就可以直接进行操作的这个技术是怎么做到的?

李晓鹏:系统本身启动了Accessibility机制,即所谓的「辅助功能」,最初设计的想法是用来帮助有阅读障碍的用户,它比较关键的一点是可以去读取屏幕上的点。如果我们开启了这个机制,装了应用安装器,就是PackageInstaller,它被调用起来并发生了变化,我们根据屏幕上的元素找到这个按钮,就可以替代用户去点,这个功能的关键点就是这些。


豌豆荚工程师 李晓鹏

CSDN:这个技术存不存在技术性的门槛,别的公司也做类似「自动装」的功能?

李晓鹏:从技术上来说,并没有多么高的门槛,首先要了解整个Accessibility这一套机制,要懂得如何确保运用这个机制,并保证应用的安全性。因为我们要判断出PackageInstaller这个应用是不是我们发起安装的,这也是一个要点。之后根据业务逻辑找需要的元素去做就可以了。

程志达:还有一点,虽然在一台手机上可以做,但由于Android ROM非常多,尤其是厂商对ROM进行了更深度的定制,在应用安装器上已经和Google原生的样式,不管是长相还是安装流程这些元素都已经不是完全一样,要支持这些手机的话,更多的工作量在这方面。


CSDN:这方面遇到过哪些技术性的困难?

李晓鹏:很多手机的应用安装器定制之后,安装的流程不一样,比如说最原始的Google打开之后会显示一些权限,像有些上来是先解包,然后分析它里面的权限,给你选项问需不需要去选择,这个东西已经开始之后,再去点,或者有的手机装完成后会弹出一些提示,给你选择权限,这个过程的时间会比较长,要在这个方面准备好之后再去点,再去做这样的工作,或者有的手机在装完之后会给你一些提示,让你去选择权限等等,让你去开关东西,这方面要做一些兼容。因为ROM很多,我们也不可能见到那么多的应用,最开始开发的时候我们自己找几十台机器来做,在公司内部来做,稳定之后,我们放到一些论坛或者找一些活跃用户帮我们来测试,目前看我们这边大概也覆盖了3000多款设备。

CSDN:你说的不同的Android定制系统,不一定是像小米、魅族这样的比较大的定制系统,可能是比较小众机型的系统吗?

李晓鹏:从我们做的这些事情来看,越是技术实力强的厂商,越会对安装器做一些改动。像小米、魅族、联想、三星等都会做比较大的改动,但是再小一点的厂商,基本上只是改个颜色、位置,不会对流程做过多修改。可以说只是换个皮而已,流程方面不会有过多的修改,而越是大厂商,做的改动越多,他们之间的差别比较大。

CSDN:你们实现这个功能的话,会给用户造成安全性的隐患吗?

李晓鹏:刚才说到了Accessibility,它最重要的一点就是可以去读屏,发现UI有变化,会从屏幕上获取你需要的信息进行业务操作。有一个问题,这个机制可以用但不能滥用,如果滥用的话,屏幕上几乎所有内容都可以读到,我们向系统注册服务时只注册了应用安装器。用了这么多款手机,发现应用安装器就是两个,一个是原生的com.android.installer,一个是联想的com.lenovo.safecenter,我们只向系统注册了这两个,只对这两个App有权限,其他是没有任何权限的。我们不会干涉用户其他的App或读屏,这是可以保证的,甚至你反编我们的代码都可以,不会窃取用户的任何信息。

程志达:一方面是限制这两个应用,另外也限制它打开的时候必须是由豌豆荚主动打开的,本质上来说,只有在豌豆荚里面安装或升级应用才有可能会触发「自动装」的功能。

CSDN:从去年至今,豌豆荚不再是为应用服务的产品,而是变成一个综合性的娱乐平台,这时候推出「自动装」这样的功能,是出于什么样的考虑?

程志达:豌豆荚一个大的愿景是希望在浏览、获取消费内容和应用整个的环节中都能给用户更好的体验。今年年初在应用和游戏、浏览等方面都做了一些改进,对应用分类进行重新设计,更贴合规范,还做了一些像生活服务这样分门别类帮地用户把O2O的应用都整理出来,并对其特点进行详尽介绍,每个地方可以用的这些服务。而像游戏类应用则争取给出更全面的信息,比如增加了攻略之类的介绍,来为用户提供更高质量的内容。

这相当于是一个整体的消费流程,但就安装这个点来说,从内部和用户的反馈来看,自动安装一直是呼声很高的功能。之前也有一些其他的解决方案,比如Root或临时Root功能也能实现这样的效果,但是本质上来说是利用一些系统漏洞来达成,它的风险性会更高,而且在Android 4.3以上的系统中,临时Root这条路已经很难走通,直到现在也没有通用的针对Android 4.3以上的Root的方案,如果想产品化这个功能的话,我们还是希望用一些系统比较支持、对用户风险最小、只能帮助用户安装App的方法。

CSDN:「自动装」在豌豆荚产品线里扮演什么样的角色,怎么定位这一款产品?

程志达:我们希望在整个不管是浏览、获取、消费的过程当中都会帮用户找到更优的一个方案,在这个地方正好有一个很大的痛点需要解决。刚才我们也提到,豌豆荚在其他方面也会做一些优化,包括应用、游戏等都是来完成这样一个愿景的。

CSDN:如果杀毒软件把豌豆荚加入黑名单状态,「自动装」还能用吗?

李晓鹏:这个没关系,因为Accessibility这个机制本身不是通过漏洞,而是一个系统支持的接口,除非是在ROM选项中禁止豌豆荚使用Accessibility,可能就没有办法。但我们使用是正常的系统接口,应该没有杀毒软件来干这个事情。

程志达:辅助功能除了我们做这些事情之外,其实也是对无障碍的,包括读屏软件也是正常在使用的接口,如果完全干掉的话,也会影响很多用户的正常使用。

CSDN:在使用Accessibility的过程中会发现不同的厂商,他们ROM本身也存在一些问题,就这方面你们需要去进行解决吗?

李晓鹏:ROM本身存在的问题倒不是说机型适配,有的ROM是直接把Accessibility从设置界面抹掉了,但是在程序里有一个设置按钮,直接打开Accessibility的界面做开关可以方便用户,从程序里调过去,再点时结果可能是因为ROM在定制的一些问题,自己的界面直接就崩掉了,对这种机器的做法是,既然你不大支持,我们是有白名单机制的,你的ROM不支持,我们也没有办法很好地从代码方面来解决检测,这取决于你是否可以试,我们就这样的白名单机制中列出来,用户至少不会在代码里和程序当中看到有这功能可以试,结果试的时候看这个ROM崩掉了,至少不会有这样的问题存在。

CSDN:「自动装」在产品设计方面有没有你们比较独特的考虑,呈现在产品、功能以及UI 上?

程志达:可以看一下,因为这个操作实际有点像自动化,或者是用户不知道手机屏幕为什么会动来动去的,让用户在等待的过程中不至于说觉得这个手机会有什么问题,我们做了些引导自动化,或者告诉他帮他点击了多少次,除此之外,我们会尽量减少对用户的干扰,只要让用户能够顺利了解它功能体验优化点,主动去打开,在打开的过程当中不会遇到问题就可以了。

李晓鹏:在用户第一次打开的时候会有一些提示,告诉有这样的新功能,想不想来用一下。其实还有一个点,在自动安装之前做的,如果在用以前的一些应用商店,比如用户下了5个应用,一个特点是如果没有自动安装的话,可能还没点完,又有一个下完了,新的安装界面又跳出来,这是很讨厌的事情。我们现在做的是会下,并不是马上就出来,会过一段时间等下好了应用一起弹出来,用户看了是只弹了一次出来,其实是盖着的。如果有「自动装」,不用一直点,如果你想一直看,肯定是安一个,下面又来一个,这种视觉效果会更好一些,免打扰性,也会更舒服一些。

CSDN:现在自动装检测到你系统里有应用,会自动帮你做,还是选择要自动装的话,所有的应用程序都可以帮你升级。

李晓鹏:是否升级应用和升级哪个应用还是由Android市场决定的,由用户主动触发的操作,比如这是一个老版本,要升级,是否要升级,这是一个可以点,如果有很多的话,「一键升级」就可以。现在在下载,你就不用管了,这个过程很舒服。

程志达:之前应该是在PC版上有这个功能,但是手机版上这个功能一直还是空白的,包括其他的第三方应用商店也都是做得不是很成熟,包括用Root之类的,我们发现去年年底Root的用户比例已经到了14%左右,如果使用那些方案的话,影响用户的面会很小。像Android 4.3以上的,我们现在的覆盖面已经到80%以上,所以使用这个方案能够触及的用户会更多。

CSDN:有一些用户七八个应用要升级,比如升级到第四个,内存不够了,就不能继续安装,这样的状态下就中止了是吗?

李晓鹏:这是系统的逻辑,因为我们没有获得权限,系统上反馈安不了,我们也没有办法。但是本身豌豆荚在下载的时候,其实是可以判断出当前的路径是否还有空间可以下,会做一些自动的选择。而且现在手机都是16G乃至20G以上,所以出现这种没有安装空间的情况是很少的,现在多下几个老版本的应用,几个系统一起升级,一键就可以应用。


CSDN移动将持续为您优选移动开发的精华内容,共同探讨移动开发的技术热点话题,涵盖移动应用、开发工具、移动游戏及引擎、智能硬件、物联网等方方面面,如果您有想分享的技术、观点,可通过电子邮件(tangxy#csdn.net,请把#改成@)投稿。

第一时间掌握最新移动开发相关信息和技术,请关注mobilehub公众微信号(ID: mobilehub)。


0
0