Android Studio 1.5刚推出几天,2.0就正式在 Canary 通道中放了出来,从1到2是一个大的版本升级,最主要就是体现在“快”这一个字上,也就是提速 app 的 build 和 deployment。
获取2.0
全新安装
修改 update channel
‘Command+,’
Tips:Canary,Dev,Beta,Stable 四个 Channel 从 Chrome 项目中借鉴过来,也几乎变成了 Google 发布客户端更新的官方范式
- Canary:weekly build(chrome 中 Canary 为 daily build)
- 发布依次由 Canary-> Dev-> Beta-> Stable 不断推进,让 Bug 尽早发现并修复
改进
dx
dx工具负责将所有经过 javac编译生成的.class文件转换并合并成一个.dex(dalivk executable)文件
- 优化的 dx merger
- Build Tools 23.0.2+.
后台运行 dx(Run dx in process),把 dx 工作分散到平时默默进行,不用挤到 build 时,降低 build 时间峰值
- Gradle 2.4+
- Plugin 2.0.0+
- Build Tools 23.0.2+
- 在 build.gradle 中启用12345android {dexOptions {dexInProcess = true}}
配置 gradle 最大 jvm 内存使用,dex.jar 运行在 gradle 内存空间中,gradle以 daemon 进程一直存活代替之前的按需启动的短生命周期实例。在 project 下的 gradle.properties 中设置
org.gradle.jvmargs=-Xmx4096m
,
- 并行 dexer
- 最多可并行4个 dexer 任务
- 在 project 下的 gradle.properties 中使用android.dexerPoolSize环境变量来指定并行数量
ProGuard
- 不足:
- 不支持增量模式,每次都是全部处理一遍
- 阻止 pre-dexing,只支持单个 dex 输出且每次执行都是全部 re-dexing
- 改进:
- 部分增量模式支持
- 可以 pre-dexing
- 使用,不需额外配置,得到的好处就是快了123456789101112android {buildTypes {debug {minifyEnabled trueuseProguard false}release {minifyEnabled trueuseProguard true}}}
multi-dex
根据 connected Device API level:
=21,即 art 上,运行时原生支持加载多个 dex 文件,在安装编译时将多个 dex 编译合在一起,
- <21,即 dalivk="" 上,打包时使用="" legacy="" multi-dex="" 模式,=""
21,即>1compile 'com.android.support:multidex:1.0.0'
这个选择是Android Studio 自动的,配置好后,不需要手动干预。
更快速的发布
adb
新的 adb,提供更稳定高速的连接通路
针对所连接设备进行 debug 构建,只在 Android Studio 中才有特性
通常情况下APK 包含了多 dpi 支持,但开发设备上的 dpi 是已知的(如 mdpi),所以构建APK 时自动只包含需要的 dpi 资源,减少 apk 体积。
后续还将对 ABIs 和 multi-dex 进行过滤,进一步减小 apk 体积。
Instant Run
算是一项突破性的改进,比正常的开发安装调试周期快50倍。
新的 build 流程
原理:
- 只发布更改过的部分
- 避免安装
- 无需关闭再重启应用
应用场景:
- Hot swap
- Warm swap
- Cold swap
- Rebuild&Reinstall
在2.0中新建的项目自动开启 Instant Run ,针对老项目需要手动开启。
有了这项技术支持,对于 UI 和 Code 的更改,都可以用秒杀的形式反映出来,真正做到即时编程。
注意的是 Hot swap 使用的是替换内存技术,如果关闭应用,再打开,还是旧代码。
Instant Run 与正常的 Run 和 Debug 同时存在,只是icon 上加了一道闪电。
Emulator
难得ADK Team 还记得要改进下这个慢牛模拟器。
- CPU,支持多核。
- GPU,支持 GL ES1.0,将要运行2.0。
- I/O,可以向模拟器里拖图片、APK,任意想传的,并且传输速度比 USB 真机快。
- 新的 UI,更易操作。
- GPS,接收 KML 和 GPX 文件,模拟移动的 GPS 位置。
- Network,模拟不同网络类型,如2G,3G等。
- 支持指纹的模拟。
- 支持拖动缩放。
- 横竖屏翻转。
模拟器本身还是基于 qemu,不像 Genymtion 基于 virtualbox 那样启动飞快,但还在改进,可以和 Genymotion 配合使用,测试一些最新的系统,不像之前根本不会去用。
后记
随着 Brillo 发布的临近,相信 Android Studio 在 NDK 以及性能上还有更多的进步,节省开发者的时间,从 Instant Run 上还是看出来有在用心做的,不再只满足于Just work 的状态。