亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

用Android Studio3.0新功能加快構(gòu)建速度

 更新時(shí)間:2017年11月16日 14:13:49   投稿:laozhang  
本文主要介紹了使用Android Studio3.0新功能,加快Android Studio的構(gòu)建速度等相關(guān)做法。

Android Studio3.0很多新的功能,他們可以直接加快Android Studio的構(gòu)建速度從而加快開(kāi)發(fā)效率,構(gòu)建速度直接影響到開(kāi)發(fā)效率,浪費(fèi)時(shí)間即浪費(fèi)生命,可以通過(guò)修改一些配置,優(yōu)化下構(gòu)建速度。

Android Studio3.0之前的做法

通過(guò)配置DEX 資源縮短構(gòu)建時(shí)間

gradle 添加以下代碼

android {
 ...
 dexOptions {
  maxProcessCount 4 // this is the default value
  javaMaxHeapSize "2g"
 }
}

maxProcessCount

設(shè)置可以并行啟動(dòng)的 DEX 進(jìn)程的最大數(shù)量

javaMaxHeapSize 設(shè)置 dex 操作的最大內(nèi)存分配池大小
根據(jù)自己電腦的配置,設(shè)置這兩個(gè)值,通常情況下這兩個(gè)值越大越好

啟用 dexing-in-process 和增量 Java 編譯

Android Plugin for Gradle 版本 2.1.0 及更高版本還引入了其他的構(gòu)建流程改進(jìn),包括增量 Java 編譯和 dexing-in-process。增量 Java 編譯默認(rèn)情況下處于啟用狀態(tài),這種編譯方式僅對(duì)發(fā)生變化或需要重新編譯的源代碼部分進(jìn)行重新編譯,可以縮短開(kāi)發(fā)過(guò)程中的編譯時(shí)間。

dexing-in-process 在構(gòu)建流程而不是單獨(dú)的外部 VM 流程中執(zhí)行 dexing。這樣不僅可以讓增量構(gòu)建更快,也可以顯著提高完整構(gòu)建的速度。要啟用此功能,您需要將 Gradle 后臺(tái)進(jìn)程的最大堆大小設(shè)置為至少 2048 MB。要進(jìn)行設(shè)置,您可以將以下代碼包含到項(xiàng)目的 gradle.properties 文件中

org.gradle.jvmargs = -Xmx2048m

如果您已經(jīng)在模塊級(jí)別的 build.gradle 文件中為 javaMaxHeapSize 定義值,則需要將后臺(tái)進(jìn)程的最大堆大小設(shè)置為 javaMaxHeapSize 的值 + 1024 MB。例如,如果您已將 javaMaxHeapSize 設(shè)為“2g”,則需要將以下代碼添加到項(xiàng)目的 gradle.properties 文件中:

org.gradle.jvmargs = -Xmx3072m

3.0之后的做法

使用用D8 編譯器作為DEX 編譯器

Android Studio3.0 包含了一個(gè)新的可選擇DEX編譯器,叫做D8,不久它將替換掉舊的DX編譯器,現(xiàn)在可以選擇使用新的編譯器,DEX編譯直接影響到app的構(gòu)建時(shí)間,dex文件大小,和運(yùn)行時(shí)的性能,當(dāng)使用新的D8編譯器,D8編譯更快和輸出更小的.dex文件,并且相同或者更好的app運(yùn)行時(shí)性能。要想使用D8編譯器,把以下代碼添加到工程的gradle.properties 文件即可

android.enableD8=true

使用新的依賴(lài)方式

也就是指dependencies代碼塊的引用

dependencies{
  compile project('xxx')
  compile 'com.github.bumptech.glide:glide:3.7.0'
}

Android gradle 3.0 插件有4種引入方式
* implementation 相當(dāng)于原來(lái)的compile
* api 相當(dāng)于原來(lái)的compile
* compileOnly 相當(dāng)于原來(lái)的provided
* runtimeOnly 相當(dāng)于原來(lái)的apk

一般來(lái)說(shuō)實(shí)際中主要用到的是compile
為了提高構(gòu)建速度
替換成

implementation project('xxx')
implementation 'com.github.bumptech.glide:glide:3.7.0'
api project('xxx')
api 'com.github.bumptech.glide:glide:3.7.0'

那這兩者有什么區(qū)別呢

此時(shí)需要注意的一個(gè)地方,例如一個(gè)叫A的lib里面用implementation引用一個(gè)B庫(kù),又有一個(gè)C的module(不管是lib還是app)引用了A,這個(gè)C的module是引用了不了B的,也就是不能使用B庫(kù)里面的類(lèi)和方法。這也是為什么使用implemention會(huì)加快構(gòu)建速度的原因,可以減少重復(fù)編譯。要想引用B到的庫(kù),可以使用api。在3.0中,api用法可以完全可以替換之前的compile,不用擔(dān)心編譯問(wèn)題。

簡(jiǎn)單總結(jié)下:

implementation:C引用A,即使A庫(kù)implementation方式引用B,C也不會(huì)引用B

api :C引用A,并且A庫(kù)用api方式引用B,C會(huì)引用B

compileOnly 只依賴(lài)庫(kù)用來(lái)編譯,不會(huì)把庫(kù)打包進(jìn)apk,在一些特定的場(chǎng)景很有用

runtimeOnly 不用來(lái)編譯,但是會(huì)打包到apk,這個(gè)方式是deprecated(不推薦使用)的

參考

配置構(gòu)建

Migrate to Android Plugin for Gradle 3.0.0

相關(guān)文章

最新評(píng)論