每次吃一点AndroidのGradle加速

目录:1、Gradle初识2、Gradle加速3、AndroidStudio工程下的build.gradle文件4、AndroidStudio导入工程还是卡卡卡???

Android小仙

1. Gradle是什么?

1.1. 概念

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。一种依赖管理工具,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。 用于自动化构建、测试、发布打包

1.2. Gradle的Project与Task

Project工程:一个待编译的工程称为一个Project工程
Task任务:每一个Project在构建的时候都包含一些列的任务,例如在AndroidStudio中的Gradle编译就包括:

  • Java源码编译任务
  • 资源编译任务
  • JNI编译任务
  • lint检查任务
  • 打包生成apk任务
  • 签名任务等等

1.3. Gradle做什么用?

  • 依赖管理
  • 版本发布
  • 差异管理

2. Gradle加速

安卓开发过程中最不能忍的就是Gradle那龟速的构建速度。AndroidStudio使用最郁闷莫过于导入一个工程等上大半天。所以提高项目的构建速度势在必行。

  • 1、给Gradle配置一个gradle.properties文件
    在用户目录下的.gradle文件夹里新增一个名为gradle.properties的gradle属性配置文件。
    在文件中添加以下内容:

    //让gradle使用单独的守护进程org.gradle.daemon=true//让gradle并行编译org.gradle.parallel=true//让gradle在需要的时候才配置org.gradle.configureondemand=true//增加gradle运行的java虚拟机的大小org.gradle.jvmargs=-Xmx1024m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

    这里是对所有的工程生效。
    如果将gradle.properties文件只配置在单个工程下,那么只对该工程有效。

  • 使用国内的maven仓库,这里用的是阿里云的。
    在用户目录下的.gradle文件夹里新增一个名为ini.gradle的gradle初始化配置文件。
    在文件中添加以下内容:

    allprojects{  repositories {    def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'      all { ArtifactRepository repo ->        if(repo instanceof MavenArtifactRepository){          def url = repo.url.toString()          if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {            project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."            remove repo          }       }    }    maven {      url REPOSITORY_URL    }  }  }
  • 修改AndroidStudio的配置:offline的工作模式,这样就不用每次都去抓取最新的内容,本地有就直接使用本地的:


Paste_Image.png


同时对Compiler做如下配置:


Paste_Image.png
  • 修改本地仓库的位置,避免占用C盘内存,影响运行速度。
    在另一个盘符下新建一个文件夹,将用户目录下的.gradle文件夹全部拷贝到该目录下。比如我是迁移到T盘的GradleRepo文件夹下。
    然后添加系统环境变量:
    GRADLE_USER_HOME=t:/GradleRepo/.gradle

3. AndroidStudio工程下的build.gradle文件

项目根目录下的build.gradle内容,默认包含三个标签:

  • buildscript
  • allpprojects
  • task clean
// Top-level build file where you can add configuration options common to all sub-projects/modules.// gradle脚本自身需要使用的资源。可以声明的资源包括依赖项、第三方插件、maven仓库地址等。buildscript {    repositories { // 声明仓库源        jcenter() // 中央远程仓库,兼容maven中心仓库,性能更优    }    dependencies {         classpath'com.android.tools.build:gradle:2.3.0'// 声明gradle插件的版本// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files    }}// 所有Project默认的仓库源allprojects {    repositories {        jcenter()    }}// 声明一个名为clean的任务,作用是每当修改settings.gradle文件后点击同步,就会删除rootProject.buildDir下的文件(清除了External Libraries里的包,重新添加一次)task clean(type: Delete) {    delete rootProject.buildDir}

应用android app目录下的build.gradle文件,默认包含三个标签:

  • apply plugin
  • android
  • dependencies
//声明类型是安卓应用apply plugin: 'com.android.application'android {    compileSdkVersion 25// 编译的SDK版本    buildToolsVersion "25.0.2"// 编译的tools版本// 一些默认的配置    defaultConfig {        applicationId "com.lisathecat.mvp.my_mvp_app"// 包名        minSdkVersion 15// 支持的最低SDK版本        targetSdkVersion 25// 支持的目标版本        versionCode 1// 版本号        versionName "1.0"//版本名称//AndroidJUnitRunner单元测试在gradle文件下的配置        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    buildTypes { //build类型        release {//发布配置            minifyEnabled false//关闭混淆//指定proguard文件            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'         }        debug {//调试配置            signingConfig signingConfigs.release        }    }}dependencies {    // 编译本地libs目录下的所有依赖compilefileTree(dir: 'libs', include: ['*.jar'])    // 测试编译配置    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {        excludegroup: 'com.android.support', module: 'support-annotations'    })    // 项目添加的引用包compile'com.android.support:appcompat-v7:25.2.0'compile'com.android.support:design:25.2.0'compile'com.android.support.constraint:constraint-layout:1.0.1'    testCompile 'junit:junit:4.12'}

4. AndroidStudio导入工程还是卡卡卡???

AndroidStudio安装的同时也会安装Gradle插件,在用户的根目录下同时生成.gradle文件,在.gradle/wrapper/dists目录下面有gradle-versioncode-all,如:gradle-3.3-allgradle-2.14.1-all这样的文件夹。
在导入安卓工程的时候常常会出现卡住的现象,那是因为.gradle里面没有工程设置的构建工程的gradle版本,所以AndroidStudio在默默下载对应的gradle版本。
可以考虑先修改配置文件再导入。

  • Gradle,包括Gradle使用版本和Android插件版本
  • JDK,这个所有的Java程序都需要
  • Compile Sdk—需要的Android SDK
  • Build Tool—编译工具
  • 众多第三方包

Gradle各个版本下载通道
安卓开发各种工具下载通道

参考资料:
AndroidStudio下gradle的入门介绍与使用
加速Android Studio的Gradle构建速度
学习Android Studio里的Gradle
AndroidStudio导入太慢?。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值