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版本相同。

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