Android 开发周报:Android7.0 截图公布、插件化原理解析

  • 郭亮

2016 年 2 月 29 日

话题:移动Android语言 & 开发架构

新闻

  1. 《安卓 7.0 首批截图公布:惊现汉堡菜单》:2 月 26 日消息,谷歌在开发者页面公布了首批 Android N(安卓 7.0)截图,从截图中能够了解到的一点是安卓 7.0 设置界面中会添加汉堡式菜单,但并不清楚是否汉堡菜单会贯穿全系统。当然,最终这个特性会不会出现在安卓 7.0 中也不能确定。另外还有消息称,安卓 7.0 将取消应用抽屉。
  2. 《微软正式宣布移植 Android 应用计划流产》:2 月 26 日上午,微软今天宣布将停止为开发者提供 Android 应用导入工具,意味着他们无法借助微软提供的官方工具轻易将 Android 应用导入 Windows 10。微软最早在去年的 Build 开发者大会上宣布了这个名为 Project Astoria 的项目,同时还发布了一项类似的计划,可以在 iOS 与 Windows 之间建立所谓的“桥”,而且可以帮助开发者将旧版 Windows 软件和 Web 软件迁移到新版 Windows 10 系统。
  3. 《2015 年 Android 恶意软件样本数量超 230 万》:据德国网络安全公司 G DATA 最新公布的一份调查报告显示,2015 年,Android 恶意软件样本数量达到了 2,333,777 个,形象的来描述就是差不多每隔 11 秒就会出现一个新的 Adnroid 恶意软件样本。该数值同比 2014 年增长了 50%。而在 2015 年第四季度,新出现的 Android 恶意软件文件数量达到 758,133 个,同比 14 年第四季度增长了 32%。

教程

  1. 《ReactNative For Android 项目实战总结》:本文由 QQ 空间终端开发团队出品。Android Qzone 6.1 版本在情侣空间涉水 React Native,以动态插件方式将情侣空间进行 React Natived 的改造。在情侣空间基础上,Android Qzone 6.2 版本以融合的方式将话题圈进行 React Native 改造。本文主要讲述话题圈的开发改造流程、相关数据对比及性能优化,本次改造 React Native 基于 15Release。
  2. 《Android:我为何要封装 DialogFragment?》:Dialog 在实际使用中会存在一些问题,比如在手机配置发生变化后(比如屏幕旋屏),无法恢复 Dialog 的状态。DialogFragment 是在 Android3.0 被引入的,从其名字可以很直观的看出它是一种基于 Fragment 的 Dialog,可以用来创建对话框,DialogFragment 是用来替代 Dialog 的。本文作者解释了为什么抛弃 Dialog 而使用 DialogFragment,并且详解了对 DialogFragment 的封装过程。
  3. 《Facebook 如何采集其 Android 应用性能数据》:Facebook 一直致力于不断提高 Android 应用的运行速度。虽然他们内部已经有类似 CTScan 这样的性能跟踪系统,但 Android 的碎片化使他们无法在实验室中测试每一种可能。因此,他们希望通过遥测技术从人们真实使用的 Android 手机中收集性能信息来补充测试数据。本文介绍了 Facebook 的插桩方法,他们在考察了 Android 内建的 Debug 以及另一些方法后,选择了字节码重写技术,避免了手工插桩的劳动,且性能损失降到最低。
  4. 《Android 开发必备知识:为什么说 Kotlin 值得一试》Kotlin是一门与 Swift 类似的静态类型 JVM 语言,由 JetBrains 设计开发并开源。与 Java 相比,Kotlin 的语法更简洁、更具表达性,而且提供了更多的特性。用 Kotlin 替代 Java 开发你的程序,无论是 Android 还是 Server,你都能像之前写 Java 一样思考,同时又能享受到新一代编程语言的特性。其实经过一年多的发展,Kotlin 1.0 已经 release,feature 基本完善,api 也趋于稳定,或许你可以尝试使用 Kotlin 来开发 App 了。
  5. 《Android Support Library 23.2 介绍》:当我们说起 Android Support Library 时,必须清楚的认识到这不仅仅只是一个库,而是一个能对 API 向后兼容的,提供独特的功能而不需要最新平台(plathform)支持的 库的集合。23.2 版本在许多现有库的基础上增加一些新的支持以及功能。本文是对该库的一个简单介绍,有助于我们更加了解该库的新特性。
  6. 《最详细的 Toolbar 开发实践总结》:Toolbar 是在 Android 5.0 开始推出的一个 Material Design 风格的导航控件,Google 强烈推荐大家使用 Toolbar 来作为 Android 客户端的导航栏,以此来取代之前的 Actionbar。与 Actionbar 相比,Toolbar 明显要灵活的多。它不像 Actionbar 一样,一定要固定在 Activity 的顶部,而是可以放到界面的任意位置。除此之外,在设计 Toolbar 的时候,Google 也留给了开发者很多可定制修改的余地,这些可定制修改的属性在 API 文档中都有详细介绍。本文详细讲解了 Toolbar 的使用方法,能够帮助我们快速上手 Toolbar。
  7. 《在 Android 应用中使用 Clean 架构》Clean是一个开源的 Android 架构。写一个好的 App 是很复杂的,不仅要满足产品需求,还要健壮、好维护、好测试并且容易扩展和修改。这便是 The Clean Architecture 出现的原因。本文详细的介绍了 Clean 的使用方法,结合代码讲解了如何在 Android 应用中使用 Clean 架构。这里是英文原文。
  8. 《Android 插件化原理解析——Hook 机制之 Binder Hook》:Android 系统通过 Binder 机制给应用程序提供了一系列的系统服务,诸如 ActivityManagerService,ClipboardManager, AudioManager 等;这些广泛存在系统服务给应用程序提供了诸如任务管理,音频,视频等异常强大的功能。插件框架作为各个插件的管理者,为了使得插件能够无缝地使用这些系统服务,自然会对这些系统服务做出一定的改造 (Hook),使得插件的开发和使用更加方便,从而大大降低插件的开发和维护成本。我们把这种 Hook 系统服务的机制称之为 Binder Hook。本文对 Binder Hook 进行了详解,对于我们了解插件化原理大有帮助。这里是作者另外一篇介绍插件化原理的文章。
  9. 《开发一流的 Android SDK:Fabric SDK 的创建经验》:Twitter 的 Fabric 是知名的注重质量的 SDK,并已部署在数十亿的设备。来自 Twitter 的 Ty Smith,揭示了 Fabric 团队创建 Fabric 的各种原则,特别是在 Android 方面。通过深入参与技术决策团队,Ty 了解到很多信息,他展示了团队在创建这个 SDK 过程中学到的各种经验心得,关于稳定性、性能、SDK 体积控制、以及对于一些特殊情况的处理这些方面。无论你现在或将来想要建设一个 SDK,通过本文(文中附视频)你将收益很多关于设计 SDK 的伟大想法。

开源项目

  1. Douya:Douya 是一款开源的豆瓣客户端,项目采用了 Material Design 的设计风格。
  2. SwipeCardView:SwipeCardView 是一个带渐变层叠动画的左右滑动效果(类似于探探左右刷脸效果)。
  3. CoolAndroidAnim:一个酷炫的 android loading 效果,作者的想法来源于 nexus6.0 系统的开机动画,也是对于它的一个模仿:从四个小球的 不同的组合动画演变成 loading 字样的效果。

调查报告

  1. 《Google Play 榜单 APP 冷启动速度分析报告》:作者通过对 Google Play 商店中排名前 100 名 APP 的启动速度进行测量,得出了这份 Google Play 榜单 APP 冷启动速度分析报告。

感谢徐川对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。

移动Android语言 & 开发架构