每次吃一點(diǎn)AndroidのGradle加速

目錄:
1、Gradle初識
2、Gradle加速
3、AndroidStudio工程下的build.gradle文件
4、AndroidStudio導(dǎo)入工程還是卡卡卡???

Android小仙

1. Gradle是什么?

1.1. 概念

Gradle是一個基于Apache Ant和Apache Maven概念的項(xiàng)目自動化建構(gòu)工具。一種依賴管理工具,面向Java應(yīng)用為主,它拋棄了基于XML的各種繁瑣配置,取而代之的是一種基于Groovy的內(nèi)部領(lǐng)域特定(DSL)語言。 用于自動化構(gòu)建、測試、發(fā)布打包。

1.2. Gradle的Project與Task

Project工程:一個待編譯的工程稱為一個Project工程
Task任務(wù):每一個Project在構(gòu)建的時候都包含一些列的任務(wù),例如在AndroidStudio中的Gradle編譯就包括:

  • Java源碼編譯任務(wù)
  • 資源編譯任務(wù)
  • JNI編譯任務(wù)
  • lint檢查任務(wù)
  • 打包生成apk任務(wù)
  • 簽名任務(wù)等等

1.3. Gradle做什么用?

  • 依賴管理
  • 版本發(fā)布
  • 差異管理

2. Gradle加速

安卓開發(fā)過程中最不能忍的就是Gradle那龜速的構(gòu)建速度。AndroidStudio使用最郁悶?zāi)^于導(dǎo)入一個工程等上大半天。所以提高項(xiàng)目的構(gòu)建速度勢在必行。

  • 1、給Gradle配置一個gradle.properties文件
    在用戶目錄下的.gradle文件夾里新增一個名為gradle.properties的gradle屬性配置文件。
    在文件中添加以下內(nèi)容:
//讓gradle使用單獨(dú)的守護(hù)進(jìn)程
org.gradle.daemon=true  
//讓gradle并行編譯
org.gradle.parallel=true 
//讓gradle在需要的時候才配置
org.gradle.configureondemand=true  
//增加gradle運(yùn)行的java虛擬機(jī)的大小
org.gradle.jvmargs=-Xmx1024m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

這里是對所有的工程生效。
如果將gradle.properties文件只配置在單個工程下,那么只對該工程有效。

  • 使用國內(nèi)的maven倉庫,這里用的是阿里云的。
    在用戶目錄下的.gradle文件夾里新增一個名為ini.gradle的gradle初始化配置文件。
    在文件中添加以下內(nèi)容:
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的工作模式,這樣就不用每次都去抓取最新的內(nèi)容,本地有就直接使用本地的:
Paste_Image.png

同時對Compiler做如下配置:

Paste_Image.png
  • 修改本地倉庫的位置,避免占用C盤內(nèi)存,影響運(yùn)行速度。
    在另一個盤符下新建一個文件夾,將用戶目錄下的.gradle文件夾全部拷貝到該目錄下。比如我是遷移到T盤的GradleRepo文件夾下。
    然后添加系統(tǒng)環(huán)境變量:
    GRADLE_USER_HOME=t:/GradleRepo/.gradle

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

項(xiàng)目根目錄下的build.gradle內(nèi)容,默認(rèn)包含三個標(biāo)簽:

  • buildscript
  • allpprojects
  • task clean
// Top-level build file where you can add configuration options common to all sub-projects/modules.

// gradle腳本自身需要使用的資源。可以聲明的資源包括依賴項(xiàng)、第三方插件、maven倉庫地址等。
buildscript {
    repositories { // 聲明倉庫源
        jcenter() // 中央遠(yuǎn)程倉庫,兼容maven中心倉庫,性能更優(yōu)
    }
    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默認(rèn)的倉庫源
allprojects {
    repositories {
        jcenter()
    }
}

// 聲明一個名為clean的任務(wù),作用是每當(dāng)修改settings.gradle文件后點(diǎn)擊同步,就會刪除rootProject.buildDir下的文件(清除了External Libraries里的包,重新添加一次)
task clean(type: Delete) {
    delete rootProject.buildDir
}

應(yīng)用android app目錄下的build.gradle文件,默認(rèn)包含三個標(biāo)簽:

  • apply plugin
  • android
  • dependencies
//聲明類型是安卓應(yīng)用
apply plugin: 'com.android.application'

android {
    compileSdkVersion 25 // 編譯的SDK版本
    buildToolsVersion "25.0.2" // 編譯的tools版本
    // 一些默認(rèn)的配置
    defaultConfig {
        applicationId "com.lisathecat.mvp.my_mvp_app"  // 包名
        minSdkVersion 15 // 支持的最低SDK版本
        targetSdkVersion 25 // 支持的目標(biāo)版本
        versionCode 1 // 版本號
        versionName "1.0"  //版本名稱
        //AndroidJUnitRunner單元測試在gradle文件下的配置
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes { //build類型
        release {//發(fā)布配置
            minifyEnabled false //關(guān)閉混淆
            //指定proguard文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
        }
        debug {//調(diào)試配置
            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'
    })
    // 項(xiàng)目添加的引用包
    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導(dǎo)入工程還是卡卡卡???

AndroidStudio安裝的同時也會安裝Gradle插件,在用戶的根目錄下同時生成.gradle文件,在.gradle/wrapper/dists目錄下面有gradle-versioncode-all,如:gradle-3.3-all,gradle-2.14.1-all這樣的文件夾。
在導(dǎo)入安卓工程的時候常常會出現(xiàn)卡住的現(xiàn)象,那是因?yàn)?code>.gradle里面沒有工程設(shè)置的構(gòu)建工程的gradle版本,所以AndroidStudio在默默下載對應(yīng)的gradle版本。
可以考慮先修改配置文件再導(dǎo)入。

  • Gradle,包括Gradle使用版本和Android插件版本
  • JDK,這個所有的Java程序都需要
  • Compile Sdk—需要的Android SDK
  • Build Tool—編譯工具
  • 眾多第三方包

Gradle各個版本下載通道
安卓開發(fā)各種工具下載通道

參考資料:
AndroidStudio下gradle的入門介紹與使用
加速Android Studio的Gradle構(gòu)建速度
學(xué)習(xí)Android Studio里的Gradle
AndroidStudio導(dǎo)入太慢?。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,654評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,217評論 25 708
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,282評論 6 342
  • 第一首:難道愛本身可愛在於束縛 一絲不掛——陳奕迅 每個人都有段想當(dāng)初,那時年輕氣盛,無甚建樹,卻偏偏醉心于愛情。...
    9d2b8393c420閱讀 680評論 0 0
  • 《釜山行》應(yīng)該是最近最能征服我的一部電影了吧~即使這部電影情節(jié)有諸多不合理與破綻,但是確實(shí)讓觀眾對人性不免產(chǎn)生了更...
    天使沒牙齒閱讀 259評論 0 0

友情鏈接更多精彩內(nèi)容