Android 开发周报:Android 6.0 源码发布、React Native For Android 架构初探

  • 郭亮

2015 年 10 月 12 日

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

新闻

  1. 《谷歌发布安卓 6.0 源码》:按照计划,谷歌近日正式开启了 Nexus 设备 Android 6.0 Marshmallow 系统的 OTA 升级推送。目前,持有 Nexus5/Nexus6/Nexus7(2013)/Nexus9/Nexus Player 等设备的用户或许已经收到更新提示。同时谷歌在 AOSP 上公布了 Android 6.0 的源码。源码地址在这里
  2. 《Android Lollipop 装机率已达 23.5%》:谷歌近日公布了 10 月份安卓系统各版本的装机率情况,数据基于 10 月 5 号前一周内访问 Play Store 的安卓设备所用的系统情况。Android Lollipop 系统(包括 Android 5.0 和安卓 5.1)占有率从上月的 21% 增加到了 23.5%,其它版本的安卓系统占有率则有所下降。Android Lollipop 系统已经正式发布一年左右了,目前其占有率才仅有 23.5%,这个数据也充分表明了安卓系统目前的碎片化情况依然严重。
  3. 《Android 跑 Windows 程序不是梦:Wine 安卓版年底前将至》:Windows 运行 Android 应用程序早已经不是什么新鲜的事情,因为微软最新的“Project Astoria”项目就是让 Windows 10 系统通过内置的 Android 子系统实现应用兼容。近日,一家名为 CodeWeavers 的开发工作室,发布了一个有趣的跨平台项目“CrossOver for Android”,即让 Android 平板电脑和智能手机通过旗下的“兼容层”来运行 Windows 平台上的应用程序。该项目将于 2015 年底前正式发布。

教程

  1. 《React Native For Android 架构初探》: Facebook 在 9 月份发布了 React Native for Android,把 JavaScript 开发技术扩展到了 Android 平台。React Native 让开发者使用 JavaScript 和 React 编写应用,利用相同的核心代码就可以创建基于 Web,iOS 和 Android 平台的原生应用。本文浅析了 Android React 的架构及相关基础知识,能够帮助我们了解 React Native For Android 的架构、通信原理等知识点。React Native 应该是目前体验最好的跨平台技术,国内多个知名厂商已经开始使用 React Native,希望更多的开发者能尽快掌握这项技术。
  2. 《Android ListView 功能扩展,实现高性能的瀑布流布局》:ListView 的设计堪称经典,可以说是 Android 系统的重量级选手。虽然 ListView 的 API 使用起来还算简单,但其实现结构还是相当复杂的。瀑布流是市面上比较流行的一种布局方式,目前实现该效果比较好的项目有 StaggeredGridLayoutManager、 PinterestLikeAdapterView 等。本文提供了一种实现瀑布流的思路,通过完全模拟 ListView 的设计原理来解决瀑布流的效率问题、OOM 问题。使用 ListView 进行组件重写,对于我们掌握 ListView、Android 系统组件的设计原理有很大帮助。
  3. 《 Android 应用开发性能优化完全分析》:性能优化是一个很大的话题,具体到某一个点都会有两位数以上的优化技巧。关于性能优化的技术文章也是层出不穷,很多做 Android 开发的同学随便就能提出一堆优化建议。但正如作者在文中指出的现象,很少有较为系统的进行真正性能分析的案例,很多人也只是背书而已。本文是一篇分析性能的精品文章,从性能原理到真实场景案例,非常详细的解读了 Android 开发中的性能问题。当然,要掌握性能优化技巧,还是得靠经验和实战,所以希望大家能将文中的技巧快速用于生产环境。
  4. 《Android 应用 Loaders 全面详解及源码浅析》:在 Android 中任何耗时的操作都不能放在 UI 主线程中,所有耗时的操作都需要使用异步实现。同样的,在 ContentProvider 中也可能存在耗时操作,这时也该使用异步操作,而 3.0 之后最推荐的异步操作就是 Loader。它可以方便我们在 Activity 和 Fragment 中异步加载数据,而不是用线程或 AsyncTask。Loader 的优点有提供异步加载数据机制、对数据源变化进行监听,实时更新数据、在 Activity 配置发生变化(如横竖屏切换)时不用重复加载数据。分析 Loaders 的文章比较少,本文值得那些对 Loaders 还不太熟练的同学阅读学习。

  5. 《美团 Android 资源混淆保护实践》:Android 应用中的 APK 安全性一直遭人诟病,市面上充斥着各种被破解或者汉化的应用,破解者可以非常简单的通过破解工具就能对一个 APK 进行反编译、破解、汉化等等,这样就可以修改原有代码的逻辑、添加新代码、添加或修改资源、或者更有甚者植入病毒等等。我们可以通过各种混淆、加固工具对代码进行保护,但资源文件依然会完全暴露。本文分享了如何采用常规方式对 APK 中的资源文件进行保护,从而将应用的安全性再提升一个等级。

  6. 《带你一步一步走出 MultiDex 的那些坑》:Dalvik Executable (DEX)文件的总方法数被限制在 65536 以内,其中包括 Android framwork method,lib method,还有你的 code method。所以很多同学都遇到过方法数超限的问题。对于该问题,Android 官方推出了自己的解决方案,但却不能满足所有应用的需求。本文作者记录了从发现 MultiDex 问题,然后寻找解决方案到最后问题解决的整个过程,文中提到了不同解决方案中的那些坑,相信本文能让你的代码走出限制。
  7. 《React Native for Android 发布独立安装包》:上期的周报中有一篇是作者介绍 React Native for Android 的文章,本期持续更新作者的动态。已经开始使用 React Native Android 的开发者应该知道,开发的时候必须启动 JS Server,然后要让手机连接这个 Server,否者会出现那个"吓人"的红色屏幕。如果要发布一个 React Native 写的 Android 应用,不可能要别人来连接这个 JS Server。可不可以不要连接这个 Server 就能运行呢?本文给出了解决方案。

开源项目

  1. ExplosionField:这是一个效果非常酷炫的 View 炸裂特效,类似于 MIUI 卸载 APP 时的动画效果。国内的开发者写了一篇分析该项目的文章,对于项目中高质量代码进行了详解。
  2. FabricView:FabricView 是一个 Android 画板,支持颜色选择、添加文字、添加图片等功能。
  3. 简诗:这是一款以中国风的样式呈现内容的 App,项目中使用的排版、字体很美。
  4. PinterestView:自定义菜单实现,长按按钮时会弹出一个漂亮的菜单,效果模仿自 Pinterest。

感谢徐川对本文的审校。

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

移动Android语言 & 开发架构