Android 开发周报:Android 6.0 占比 0.3%、Apk 编译详解

  • 郭亮

2015 年 11 月 17 日

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

新闻

  1. 《Android Wear 手表将解锁隐藏扬声器和支持中文》:近日,Android Wear 配套应用迎来了 v1.4 版本更新。外媒分析安装包内部代码后发现,里面暗藏了下一次 Android Wear 系统升级的更新项目介绍,其中就包括“利用扬声器播放声音和接听电话”。这也就验证了此前国外网友曾通过拆解一些新款的 Android Wear 智能手表发现,表内配置了扬声器模块这一事实。
  2. 《最新安卓系统份额数据 Android6.0 只有区区 0.3%》:Google 公布了每月一度的安卓各版本份额数据图,从统计中可以看到,安卓 6.0 的市场份额首次出现在了官方统计数据中,但只有 0.3%。根据 Google 的数据统计,安卓 4.4 KitKat 仍是市占率最高的安卓系统,份额达到了 37.8%,不过和上个月对比,出现了 1.1% 的下滑,安卓 4.4 同时也是份额下滑最快的安卓版本。份额增长最快的是安卓 5.1,对比上个月增长了 2.2%,份额达到了 10.1%。除了从 0% 增长到 0.3% 的安卓 6.0 外,安卓 5.1 是唯一份额上涨的安卓版本,其他安卓版本都有不同程度的下滑。

教程

  1. 《Android Context 完全解析》:Android 程序不像 Java 程序一样,随便创建一个类,写个 main 方法就能跑了,而是要有一个完整的 Android 工程环境,在这个环境下,我们有像 Activity、Service、BroadcastReceiver 等系统组件,而这些组件并不是像一个普通的 Java 对象 new 一下就能创建实例的了,而是要有它们各自的上下文环境,也就是 Context。Context 相信所有的 Android 开发人员基本上每天都在接触,因为它太常见了。虽然我们几乎每天都在使用 Context,但实际上 Context 有太多小的细节并不被大家所关注。点击文章链接,看看哪些 Context 的细节你还不知道。
  2. 《Activity 界面显示全解析》:Android 程序从点击桌面 icon 图标到界面显示,Framework 层会进行复杂的运算。有 Window 的初始化、由 Activity 去进行 View 绘制等。对于 Window 很多同学了解的并不是很透彻,只是会进行一些简单的 Api 调用。本文对 Window、Activity、View 之间的关系进行了深入的分析,对整个界面显示过程的解析也很到位,推荐大家深入学习。Framework 层的东西比较抽象,但对于我们的技术进阶有很大帮助。
  3. 《Android 应用开发编译框架流程与 IDE 及 Gradle 概要》

    我们开发 App 的大多数时候,编译流程都是直接通过 IDE 的按钮或者命令行一步到位 apk 的生成,直观上的感觉好像源码到 Apk 的生成只有一步,实质是中间会经过复杂的过程。Android 应用的编译其实就是打包为.apk 文件,这个被打包的 apk 文件实质其实是一个压缩包,这个压缩包至少包含编译为.class 文件转换的.dex 文件、一个二进制的 Manifest.xml 文件、编译的资源文件 resources.arsc、未编译的资源文件等,然后在运行前再对这个压缩包进行签名操作即可。整个过程中使用到是多个我们熟悉的工具,才会产生最后的 Apk 文件。阅读文章,了解更详细的编译流程。
  4. 《Android 开发中,有哪些坑需要注意?》:本文来自知乎上的一个提问。作者列出了 Android 开发中可能遇到的那些坑,有关于内存溢出、Api 版本、开发工具使用、数据库升级、Toast、多线程等多个知识点,点击文章,看看你踩过多少。
  5. 《Android 打包的那些事》:使用 gradle 打包 Apk 已经成为当前主流趋势,gralde 功能强大,基本能满足我们的所有需求,可以替换 AndroidManifest 的字符、多渠道区分、多工程全局配置、自定义 Apk 名称、混淆等等。文章中给出的技巧非常实用,推荐大家收藏。
  6. 《加速你的 Android 应用》:性能优化几乎是一个永恒的话题,无论是服务器端,还是前端,随着版本的迭代,开发者都会考虑性能优化。我们都希望自己的应用 bug 更少、兼容性更强、使用起来更加流畅。掌握基本的优化方法、了解常用的优化工具,是开发者的必备技能。本文介绍的工具或许你还没有使用过,但功能却很强大。同时作者也给出了内存优化编码层面的一些技巧,在文章结尾处提到的硬件加速知识也很实用。推荐大家将本文添加到性能优化的收藏夹。
  7. 《Android 架构演化之路》:演化是指一个事物变化成为另一个不同事物的平缓过程, 通常情况下会变得更加复杂或者变成更好。软件开发一直在进化和改变。实际上,一个好的代码结构必须帮助我们成长,这意味着不用重新写所有代码就可以扩展功能,当然我们也不能进行过度开发。这篇文章重点介绍了如何保持 Android 代码的清晰直观,文章中提到的技能有助于我们构建可维护、可扩展的应用。

  8. 《Android M 新特性 Doze and App Standby 模式详解》:本文是来自 QQ 空间团队的一篇文章。从 Android6.0 开始,Android 提供了两种省电延长电池寿命的功能:Doze 和 App Standby。当设备没有连接到电源,设备进入 Doze 模式时,系统将通过延迟最近用户没有使用的应用程序的后台 CPU 运作及网络活动,让应用程序处于 App Standby 状态,以此来减少电池消耗。为了保证用户的最佳体验,开发者有必要在 Doze 和 App Standby 模式下测试应用程序,及其对代码进行相应的调整。本文对两种模式进行了详解,对于出现的坑也给出了解决方案。

  9. 《用 MVP 架构开发 Android 应用》:最近一段时间关于移动端架构的讨论比较火热,有的人觉得 MVC 更好理解、有的人认为 MVVM 代码更清晰,也有的同学强烈推荐 MVP。无论是哪种架构,目的都是分离关注,使得 UI 更容易变换。不同的项目应该分别对待,结合自己的经验,加上对新架构的深入理解,选择最合适的架构才是上上策。本文是一篇介绍 MVP 架构的文章,相信文章中的一些解析会对你有所帮助。

开源项目

  1. AVLoadingIndicatorView:这是一个加载动画合集。loading 动画效果很绚。
  2. FlycoTabLayout:一个 Android TabLayout 库, 目前有两个 TabLayout:SlidingTabLayout 和 CommonTabLayout。SlidingTabLayout 对 ViewPager 依赖。CommonTabLayout 不同于 SlidingTabLayout, 它是一个不依赖 ViewPager 可以与其他控件自由搭配使用的 TabLayout。
  3. AndroidChangeSkin:一种完全无侵入的换肤方式,支持插件式和应用内,无需重启 Activity。

感谢徐川对本文的审校。

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

移动Android语言 & 开发架构