Gradle使用技巧

Gradle peer not authenticated

在更新Gradle的依賴包時,經常會發生peer not authenticated的異常,導致Gradle無法編譯。解決方法有兩個,一個是使用VPN進行網絡訪問;二是添加下面代碼:

jcenter {
    url "http://jcenter.bintray.com/"
}

Gradle加速

Gradle在編譯時會執行大量的Task,同時生成很多中間文件,導致編譯速度緩慢。解決該問題的最好的辦法就是爲電腦更好固態硬盤;其次可以在gradle.properties文件中增加如下代碼:

org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.configureondemand=true

同時在build.gradle中增加如下代碼:

dexOptions {
    incremental true
        javaMaxHeapSize "4g"
}

gradle.properties文件中的代碼,表示開啓Gradle的多線程和多核心支持。而build.gradle中的代碼,表示開啓Gradle的增量編譯,增加編譯的內存資源到4G。

增加編譯內存

對於編譯時內存溢出問題,可以在gradle.properties文件中增加下面的代碼:

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

Gradle調用終端命令

在java中可以通過調用Runtime.exec()方法來獲取終端指令的數據。在Gradle中同樣可以,如可以新建一個task,代碼如下:

task mycmd {
    println 'git log --pretty=oneline -l'.execute([],project.rootDir).text
}

如果需要調用git log –pretty=online -l指令,在終端中使用gradle mycmd即可。
在Gradle腳本中調用終端命令會降低編譯速度,需要權衡利弊。

使用Gradle精簡資源

使用minifyEnabled指令可以對Android App進行混淆,同時可以對代碼進行優化和精簡,配合shrinkResources指令可以清除工程中無效的資源文件。

android {
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

使用Gradle本地緩存

在Setting-Build-Build Tools-Gradle標籤中,選擇Offline work,並指定默認的.gradle文件夾即可。

Gradle版本問題導致的編譯錯誤

在更新Android Studio之後,可能會遇到Gradle的版本問題,導致編譯失敗,可以使用下面的步驟檢查修改:
1.打開Setting界面,在Build-Build Tools-Gradle標籤中,選擇Project-Level setting,並勾選Use default gradle wrapper (recommend)。
2.使用當前版本的Android Studio創建一個空的Android工程並進行編譯運行,目的是讓Android Studio拉取可能新增的依賴包。
3.複製剛剛創建的Android工程的Gradle目錄(其中有wrapper目錄),並粘貼到發生錯誤的工程中,替換原有的Gradle目錄。
4.檢查根目錄下的build.gradle文件,檢查Gradle的plugin版本,使之與空Android工程中的plugin版本相同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章