android studioAndroid StudioAndroid知识

每次吃一点AndroidのGradle加速

2017-03-06  本文已影响362人  耑意儿
目录:
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编译就包括:

1.3. Gradle做什么用?

2. Gradle加速

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

//让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文件只配置在单个工程下,那么只对该工程有效。

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  
    }  
  }  
}  
Paste_Image.png

同时对Compiler做如下配置:

Paste_Image.png

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

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

// 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: '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目录下的所有依赖
    compile fileTree(dir: 'libs', include: ['*.jar'])
    // 测试编译配置
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: '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各个版本下载通道
安卓开发各种工具下载通道

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

上一篇下一篇

猜你喜欢

热点阅读