Android Studio 2.2 jack深坑

前言

lambda是個好東西,配合rxjava能讓代碼看起來很是舒服,既減小了大量敲鍵盤的次數也讓可讀性變得更強(對於熟悉lambda的人來講)。html

Android studio從2.2開始支持java8,也就意味着終於能夠用上官方的lambda了。可是,坑來了…java

配置java8

如何安裝java8就不說了android

在Android studio中支持java8很簡單,以下配置數組

android {
      ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    defaultConfig {
        ...
        jackOptions {
            enabled true
        }
    }
   ...
}

問題就出在這個jackOptions上app

Jack工具鏈

Android 新一代編譯 toolchain Jack & Jill 簡介工具

看起來很美好的東西,可目前卻有不少坑測試

1、慢

原來編譯項目須要2m左右(i7-6700),開啓了以後接近6mgradle

2、亂碼

這是最坑的,最初出現亂碼的時候還覺得文件編碼搞亂了,查了半天才發現不是,是由於這玩意兒開啓以後就會默認以本地編碼編譯文件(該說法可能有誤)。ui

能夠新建一個項目,依照上面配置好,而後Log.e("Test", "測試");編碼

只要是中文,並且這個中文不是寫在xml文件裏(因爲xml都標明utf-8),那麼你會看到console裏打印出來的是亂碼(其實就是文字以gbk的編碼打印出來了)。

3、GC Overhead

在編譯tinypinyin這個開源庫的時候,因爲這個開源庫有好多個超大型的數組,老是會爆出GC Overhead的錯誤…搞了半天,試了好多種方法。

發現須要做以下處理:

在app的build.gradle裏這樣添加

android {
      ...
    dexOptions {
        javaMaxHeapSize "4096M"
    }
}

至於你要設置多少…反正我設了2G都會炸,乾脆給4G了

總結

jack看起來很美好,但在當下還只能算是一個半成品。與其爲了用lambda忍受一堆問題打開jack,還不如老老實實地寫一大坨一大坨代碼來得舒服,畢竟as的智能補全仍是很方便的。

相關文章
相關標籤/搜索