Android 开发周报:Android 将使用 OpenJDK、React Native 详解

  • 郭亮

2016 年 1 月 12 日

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

新闻

  1. 《Android 将使用 OpenJDK》:据Hacker News根据 Android 的一次源码提交表明,谷歌的移动操作系统正在将原先基于 Harmony 实现的 Java 库切换到 OpenJDK。在 2010 年收购 Sun 之后,Oracle 起诉谷歌在 Android 上使用 Java 代码侵犯版权和专利权。谷歌起初赢得了官司,陪审团判定 Java API 没有版权,但联邦巡回法庭部分地推翻了这项裁决,认为 API 有版权。美国最高法院不希望看到这种情况,就将其发给了一个下级法院。那个过程目前还在继续。
  2. 《发布三个月 Android 6.0 占比仅有 0.7%》:谷歌在去年九月底推出了 Android 6.0 系统,并于十月初放出,但直到现在这个版本的系统占比也是十分的低。近日谷歌公布了最新的 Android 系统版本最新数据,占据份额最多的依旧是 Android 4.4,而 Android 6.0 只有 0.7%。
  3. 《谷歌真要回来了:中国版 Google Play 惊现!》:从去年开始,谷歌服务回归中国市场的传闻就一直没有停断过。近日,联想移动业务总裁陈旭东的一番表态坐实了传言,他表示:“谷歌服务肯定会重新进入中国市场,今年无论如何都会回来。”,另外有多名网友曝光了一张 Google Play 帮助页面的截图,里面赫然出现了“中国版 Google Play”的字样,再次从侧面证实以上消息。

教程

  1. 《深入理解 Android(三):Xposed 详解》:从事 Android 开发的同学应该都知道 Xposed 这个神一样的框架。Xposed 功能强大,它不仅仅具有插件加载功能,而且可以 Hook Android Java 虚拟机。当然,Xposed 也有缺点,比如当我们开发插架时,每次编译后都需要重新启动设备。Xposed 强大,我们可以学习其中的精髓,并且可以把它的思想和技术用到自己的插件加载模块里,本文详细分析了 Xposed 的工作原理。
  2. 《React Native For Android 源码分析 -JS 如何调用 Native 的代码》:React Native 是 2015 年最有影响力的开源项目之一。目前国内对于 React Native 的实践还比较少,估计也只有 BAT 等一些知名厂商在尝试。所以 React Natvie 的学习资料比较少。本文是一篇介绍 React Native For Android 源码的文章,详细分析了 JS 调用 Native 代码的过程,是我们学习 React Native 的优秀教程。
  3. 《微信 Android 客户端架构演进之路》:去年本文作者在 InfoQ 举办的 ArchSummit 深圳 2014 的架构师峰会上,分享了微信 Android 客户端的架构演进史。可以说,这是一个典型的 Android 应用在从小到大的成长过程中的”踩坑”与“填坑”的历史。互联网的变化速度如此之快。2015 年底,作者重新和大家回顾了微信客户端架构的演进过程,以及其背后的开发团队、流程的变化与思考。
  4. 《Android 应用坐标系统全面详解》:很多人可能不屑一顾 Android 的坐标系,但是如果你想彻底学会自定义控件,了解 Android 各种坐标系及一些 API 的坐标含义,绝对算一个小而不可忽视的技能。所谓 Android 自定义 View 那几大主要 onXXX() 方法的重写,其实大多数都是在处理坐标逻辑运算。说到 Android 坐标系其实就是一个三维坐标,Z 轴向上,X 轴向右,Y 轴向下。这三维坐标的点处理就能构成 Android 丰富的界面或者动画等效果,所以 Android 坐标系在整个 Android 界面中算是盖楼房的尺寸草图。本文详解了 Android 中的坐标系统。
  5. 《Gradle for Android 之 Build.gradle 入门》:当我们创建一个新的工程,Android studio 会默认为我们创建三个 gradle 文件,两个 build.gradle,一个 settings.gradle,build.gradle 分别放在了根目录和 moudle 目录下。但这些 gradle 文件分别是干什么用的?很多同学对于这一点并不清楚。本文讲解了 Gradle 在一些基础知识,以及 Android Studio 的项目构建过程。
  6. 《途牛 Android App 的插件实现》:途牛的插件化是基于dynamic-load-apk实现的。定义了宿主和插件的通信方式,使得两者能够互相唤起对方的页面,调用彼此的功能。同时对 activity 的启动方式 singletask 等进行了模式实现,并增加了对 Service 的支持等。总之使得插件开发最大限度的保持着原有的 Android 开发习惯。本文来自途牛技术中心,详细分析了生产环境下插件化的实现方式。
  7. 《Android 应用启动优化: 一种 DelayLoad 的实现和原理(下篇)》:本文是作者介绍 Android 应用启动优化的第二篇文章,这里是第一篇。在 Android 开发中,应用启动速度是一个非常重要的点,应用启动优化也是一个非常重要的过程。延迟加载的实现非常简单,但是其中的原理却比较复杂,涉及到 Handler、Activity 启动过程等多个知识点。本文利用多个工具,详细分析了延迟加载的原理。

开源项目

  1. FileDownloader:FileDownloader 是一款 Android 文件下载引擎,其特点是稳定、高效、且简单易用。FileDownloader 支持高并发、独立进程及自动断点续传等功能。
  2. Small:这是一个轻巧的跨平台插件化框架。Small 的所有插件支持内置于宿主包中;插件编码、布局编写方式与独立应用开发无异;插件代码调试与整包开发无异。目前 Small 已支持 Android、iOS 以及 html5 插件,并且三者之间可以通过同一套 javascript 接口进行通信。
  3. GalleryFinal:这是一个 Android 自定义相册项目,实现了拍照、图片选择(单选 / 多选)、 裁剪(单 / 多裁剪)、旋转、ImageLoader 无绑定任由开发者选 择、功能可配置、主题样式可配置。

工具

  1. recompress-apk:这是一个可压缩已签名的 apk 的体积的脚本,且不会破坏签名。测试可把微信从 32MB 压到 30MB。如果资源占比更大的话,效果更明显。
  2. android-plus-plus:Android++ 是在 Vistual Studio 上进行 Android 开发的解决方案。Android++ 主要是针对基于 NDK 的开发,但也支持部署、资源管理及 Java 编译等。

图书

  1. 《RxJava-Essentials-CN》:这是一本关于 RxJava 的书箱,翻译自 Ivan.Morgillo 所写的《RxJava Essentials》。

感谢徐川对本文的审校。

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

移动Android语言 & 开发架构