在 11 月 14 号的豌豆荚活动中,InfoQ 采访了豌豆荚“零流量”版本技术负责人余奕霖,问及了关于交互界面和设备适配等问题。
InfoQ:请您先做一下自我介绍?
余奕霖:我叫余奕霖,现在是在负责豌豆荚安卓手机客户端的研发工作,包括目前大家所看到的“零流量”版本,以及像内容获取或者是本地管理的这些功能。
InfoQ:我们看到豌豆荚使用了 Holo 风格,对于回归到原生界面在互操作性上是如何考虑的?
余奕霖:其实一开始大家是有争论的,我们到底是使用原生的风格?或者是像其他的厂商一样设计一套自己很独特的交互?这里面其实是有两个考虑:一个是工作量本身,我们要设计一套具有豌豆荚自己风格很成熟的交互系统,可能需要花很多的时间和精力,同时未必能够做得很好,这是一个很实在的问题;第二点我们考虑到了因为 4.0 具有明显的风格,有一套很完整的理论,用户在使用其他的系统应用时,已经很熟悉、很习惯这种风格了。如果进入到我们的豌豆荚之后,发现这个交互行为和系统其他的应用很接近,他可以很快地上手,就可以满足我们简单、好用的设计理念。主要是基于这两方面的考虑。
InfoQ:安卓现在有很多产品的分支,不同的屏幕、不同的适配,豌豆荚拥有很大的用户量,那么就需要在所有的平台上做测试和支持,那么在这方面是怎么做的?
余奕霖:其实这也是我们非常头疼的一个问题,可能所有的安卓开发者都觉得这个问题很麻烦。我可以描述从研发到测试的过程:一开始在研发的时候我们会选择有代表的几种 ROM,比方说 2.1、2.3、4.0,这些是具有代表性的、最容易出问题的 ROM,我们会在研发的时候会观察它在这些 ROM 上的表现是不是显示正常、是不是会有特定的崩溃。在测试的时候可能覆盖面会更大一些,比如说我们研发的时候可能就两三款手机,但是在测试的层面可能会有十几款手机的验证。在这两个基础之后,我们会发一个小范围的测试版本,在这个版本里面收集用户的崩溃数据。
InfoQ:豌豆荚使用了哪些测试套件辅助测试?
余奕霖:这个其实没有,如果只说测试,可能有两方面,第一是我们自己研发的测试,就是所谓的单元测试,主要是验证功能和算法是否正确性、基本的是否运转正常等。另一方面主要就是黑盒测试,我们有测试的同事从普通用户的角度来体验这样的产品,看我们设计的这个流程是不是都能正确地完成,同时一些边缘的情况是不是都覆盖到了,这方面来讲,黑盒测试还是比较传统的,和很多其他公司比较类似。
InfoQ:豌豆荚现在发布的是“零流量”的版本,我们背后的考虑是怎样的?在技术上我们遇到的主要是哪些问题?
余奕霖:主要是帮大家打消使用豌豆荚的时候对流量的一个顾虑。我觉得这是很重要的。因为确实有很多人有这种很惨痛的经历,他会发现不知道什么时候他的流量已经用光了,甚至已经超标了,运营商给了几十块钱上百块钱的账单过来。我们希望如果有了我们这个东西之后,用户只要开启了,最起码我们可以保证用户不会因为豌豆荚受流量上的损失。 简单来说就是你不用再去考虑豌豆荚会跑流量。
技术上的问题,我可以先简单介绍一下我们之前的一个思路:以前很多软件网络的操作就像是一个有很多阀门的水库,这个流量可以从不同的出口跑出去,所以第一步我们需要把这个闸门给统一起来,只有一个大坝才可以出水,其他的地方都不可以。基于这个理念,我们在我们所有能够控制网络的操作层面,都把它约束到一起,就是有一个统一的开关来控制,如果开启了流量并且在移动网络下,就不应该产生任何流量。比方你之前建立的这些连接,都要先把它关掉。还有一个比较头疼的问题,我们会使用到一些第三方的 SDK,但是它有自己的网络库。你可以不去调用它,但是你在 Wi-Fi 下正常使用的时候,我们要允许它调动,因为我们在 Wi-Fi 下提供的是全功能,所以在这个比较边缘的情况下,用户正好使用了第三方 SDK 的网络,同时又从 Wi-Fi 切换到了移动网络,就会跑一点点流量。
InfoQ:现在 Google 发布了 Nexus Prime,它把安卓整个硬件水平又拉到一个新的阶段了,您对于安卓的这种开发者有什么建议?他们以后在这个平台上开发的时候要做哪些调整?或者做哪些准备?
余奕霖:其实 Google 这种策略对开发者来说是越来越有挑战的,你需要适配的东西是越来越多,然后相应的工作量也会越来越大,但是具体到比如做什么样的调整,我们有一条很核心的想法:在 Google 的文档里面叫做最小 SDK 的版本,我们希望是在这之上的,或者是目前最主流的,我们要优先保证它的体验,其他的可能以适配为主,只要我能正常运行就 OK。但是 4.2 发布的话,如果因为 4.2 的发布导致我们某些功能不能正常使用,我们会优先解决这样的问题,但是我们不会说很快就很特意地为它做一些特别的、新的特性。
InfoQ:在豌豆荚安卓版同时联网的时候,我们可能也会采取一些措施让整个流量比较小,技术上是怎样做的?
余奕霖:我们会拉取应用的列表,在拉取之后缓存起来,不会反复加载同样的东西。并对列表进行压缩,压缩之后流量比压缩之前节省了 70%。
InfoQ:最后一个,在安全方面,我们知道在安卓这一块还是漏洞很多的,有很多应用会获取一些不必要的权限,在豌豆荚我之前看到介绍会调用腾讯或者其他的一些接口,现在这个基础上,还有哪些新的保障?
余奕霖:其实这个保障更多的是在服务端去做。比如我们在应用榜里面看到一个应用,会有安全性、是否有广告的验证,并告知用户。但是这个验证主要是在服务端在做,我们只是提供一个展示。比方说你要判定一个应用是否是恶意的,实际上拍脑袋来想,他会把这个应用解包,或者是分析它的行为,这些东西第一个是技术门槛还是很高的,第二个由于手机自己的计算能力比较有限,我们很难在手机端上做一个什么东西。现在还主要是依赖和安全厂商的合作在服务器端扫描完成。
评论