Android Studio 2.2 jack深坑

叁歲伎倆 2022-02-19 22:53 236阅读 0赞

前言

lambda是个好东西,配合rxjava能让代码看起来非常舒服,既减少了大量敲键盘的次数也让可读性变得更强(对于熟悉lambda的人来说)。

Android studio从2.2开始支持java8,也就意味着终于可以用上官方的lambda了。但是,坑来了…

配置java8

如何安装java8就不说了

在Android studio中支持java8很简单,如下配置

  1. android {
  2. ...
  3. compileOptions {
  4. sourceCompatibility JavaVersion.VERSION_1_8
  5. targetCompatibility JavaVersion.VERSION_1_8
  6. }
  7. defaultConfig {
  8. ...
  9. jackOptions {
  10. enabled true
  11. }
  12. }
  13. ...
  14. }

问题就出在这个jackOptions上

Jack工具链

Android 新一代编译 toolchain Jack & Jill 简介

看起来很美好的东西,可目前却有很多坑

一、慢

原来编译项目需要2m左右(i7-6700),开启了之后接近6m

二、乱码

这是最坑的,最初出现乱码的时候还以为文件编码搞乱了,查了半天才发现不是,是因为这玩意儿开启之后就会默认以本地编码编译文件(该说法可能有误)。

可以新建一个项目,依照上面配置好,然后Log.e(“Test”, “测试”);

只要是中文,而且这个中文不是写在xml文件里(由于xml都标明utf-8),那么你会看到console里打印出来的是乱码(其实就是文字以gbk的编码打印出来了)。

三、GC Overhead

在编译tinypinyin这个开源库的时候,由于这个开源库有好多个超大型的数组,总是会爆出GC Overhead的错误…搞了半天,试了好多种方法。

发现需要作如下处理:

在app的build.gradle里这样添加

  1. android {
  2. ...
  3. dexOptions {
  4. javaMaxHeapSize "4096M"
  5. }
  6. }

至于你要设置多少…反正我设了2G都会炸,干脆给4G了

总结

jack看起来很美好,但在当下还只能算是一个半成品。与其为了用lambda忍受一堆问题打开jack,还不如老老实实地写一大坨一大坨代码来得舒服,毕竟as的智能补全还是很方便的。

发表评论

表情:
评论列表 (有 0 条评论,236人围观)

还没有评论,来说两句吧...

相关阅读