Android 开发周报:Android M 即将发布、弹幕源码开放送

  • 郭亮

2015 年 5 月 10 日

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

新闻

  1. 《谷歌即将发布 Android M 系统》:Google 本周放出了 2015 年 I/O 开发者大会的《会议日程安排表》。根据日程安排和内容描述看,最新版本的 Android M 操作系统预计会在此次大会中首度亮相。Google 在稍早时候公布的日程安排中曾提到了这款最新版本的 Android 操作系统。虽然公司随后撤下了有关描述,但 Android M 的功能改进介绍会是 I/O 大会的一个重点。据悉,新版本的 Android M 特别强调了在工作场合的应用。
  2. 《Android 版本分布图曝光 5.X 飙升至 10%》:近日最新的 Android 系统分布图得到曝光,其中 Android 5.X 版本的表现让人眼前一亮。从系统分布图来看,Android 4.X 依然是绝对主力,其中 4.0.3-4.0.4 占比 5.3%,而 4.1.X-4.2.X 占比 33.7%,4.3 和 4.4 的占比分别是 5.5%、 39.8%。值得一提的是,Android 5.0 的占比从之前的 5% 飙升至 9%,而 5.1 也从 0.4% 升至 0.7%。

    二者加起来接近 10%。
  3. 《Android Wear 客户端应用更新:支持中文》:Google 已经发布智能手表系统 Android Wear 一段时间了,也已经发布了安卓设备上的配套客户端。不过,Android Wear 系统及其配套的 App 一直都没有中文语言支持,Google 最初并没有打算在中国开展业务。现在,Google 发布了新版的 Android Wear 客户端,加入了中文语言支持,也许 Google 有意在中国开展 Android Wear 相关业务。

教程

  1. 《Android apk 防止反编译技术第五篇 - 完整性校验》:所谓完整性校验就是用各种算法来计算一个文件的完整性,防止这个文件被修改。其中常用的方法就是计算一个文件的 CRC32 的值或者计算一个文件的哈希值。我们在防止 apk 被反编译的方法中也可以采用这种方法。我们知道 apk 生成的 classes.dex 主要由 java 文件生成的,它是整个 apk 的逻辑实现。所以我们可以对 classes.dex 文件进行完整性校验,来保证整个程序的逻辑不被修改。如果我们想要保证整个 apk 文件的完整性,也可以对整个 apk 文件进行完整性校验。点击文章,查看详细实现方案。
  2. 《Canvas 之 translate、scale、rotate、skew 方法讲解》:本文是关于 Canvas、自定义 View 的相关知识。Canvas 大致可以分为三类: save、restore 等与层的保存和回滚相关的方法;scale、rotate、clipXXX 等对画布进行操作的方法;drawXXX 等一系列绘画相关的方法。掌握了这三点,关于 View 绘制方面的知识就可以说基本毕业了,以后只能靠自己的悟性了。本文详细讲解了 Canvas 的 translate(平移)、scale(缩放) 、rotate(旋转) 、skew(错切),并且提供了实现代码。
  3. 《安卓自动缩放布局,解决屏幕适配问题》:做过安卓开发的同学都知道,屏幕适配是一件非常困难的事情。Google 官方的解决方案是:screens_support 需要写多个 layout 文件以及 dimens.xml,工作量大不说,维护也麻烦。其实很多时候我们的需求很简单,就是要求不同的屏幕看上去效果一样就可以了。本文作者的解决方案是根据屏幕大小重新对布局以及布局内部对象的大小进行调整。也有的同学提出了采用百分比的方式解决该问题。不过百分比的方式实现相比本文的方法复杂一些,而且也不是完全解决适配问题。详细信息可以查看该文 《屏幕适配方案》
  4. 《Android 属性动画完全解析》:属性动画对补间动画进行了很大幅度的改进,之前补间动画可以做到的属性动画也能做到,补间动画做不到的现在属性动画也可以做到了。本文主要介绍了 ValueAnimator 和 ObjectAnimator 的高级用法。作者给出了两个 Demo,示例了使用 ValueAnimator 进行 View 移动,使用 ObjectAnimator 实现颜色渐变的效果。
  5. 《理解 TCP/IP 网络栈 & 编写网络应用(上)》:很多公司招聘需求上都会有这么一条:熟悉 TCP/IP 网络协议。虽然我们每天都上网,都要 coding,但如果没有好好学习过计算机网络,对于 TCP/IP 这种相对”底层“知识还远远谈不上理解。每个技术同学了解网络协议属于基本功,特别是移动端的开发人员,需要频繁的和服务器端进行数据交互及网络优化。本文是一篇描述 TCP 网络栈原理的文章,这里是英文原文
  6. 《用 XML 写出原生设置界面》:几乎所有的应用都会有设置和关于页面。我们一般的实现方式是通过自定义嵌套布局来实现。但这种实现方式不仅麻烦而且还是一个体力活,有时候还不符合 Android 规范。其实 Android SDK 自带了设置界面,开发者可以根据相应的 Api 快速实现美观、规范的设置页。阅读文章,看看作者是如果快速实现设置页与关于页的。
  7. 《Android 10ms 问题:关于 Android 音频路径延迟的解释》:相信很多同学都看不懂这个题目,什么 10ms、音频路径延迟,开发 N 年了也没听过这些概念。笔者也是看了后才明白题目的意思。国内很少有公司研发音频相关的 App,包括手机厂商及 ROM 团队,所以 10ms 问题对于大多数开发者来说没有任何概念。阅读本文,给自己充充电。
  8. 《如何检查 Android 应用的内存使用情况》:Android 是为移动设备而设计的,所以应该关注应用的内存使用情况。尽管 Android 的 Dalvik 虚拟机会定期执行垃圾回收操作,但这也不意味着就可以忽视应用在何时何处进行内存分配和释放。为了提供良好的用户体验,做到系统在不同应用间流畅切换,当用户和应用无交互时,避免应用不必要的内存消耗是很重要的。

开源项目

  1. ijkplayer:ijkplayer 是基于 FFmpeg n2.6Android/iOS 的视频播放器,同时提供了 Android 和 iOS 的版本,Readme 给出了详细的编译指南,并且提供了实现 Demo。我们可以利用该项目实现一个功能强大的视频播放器。
  2. MaterialViewPager:ViewPager 的 Material Design 版本,效果和 Google Play 中的 ViewPager 几乎一样,还提供了多种动画效果。开发者可以很方便的集成到自己的项目中。
  3. DanmakuFlameMaster:本周 B 站连续放大招,开源了号称 Android 上最好的弹幕引擎。DanmakuFlameMaster 使用多种方式 (View/SurfaceView/TextureView) 实现高效绘制,采用 B 站 xml 弹幕格式解析,支持自定义字体,支持多种弹幕参数设置等。功能强大,应该是视频类应用的大福利。

工具

  1. Androidtool-mac:Mac 用户的小福利来了,该工具可以对 Android 设备进行截屏、录制视频(Gif 和 mp4),也可以直接安装 Mac 上的 apk 文件。开发者可以使用 AndroidTool 收集 Bug 报告,还可以运行脚本。最后说明一点:该工具是由 swift 编写,你是不是也应该学学 Swift 了?

感谢徐川对本文的审校。

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

移动Android语言 & 开发架构