學習Android Studio里的Gradle


一直聽說Gradle很強大,只是偶爾用Android Studio創建Demo的時候看到他一次,今天抽個時間完整記錄一下。

1.gradle位置

Android Studio項目創建好之后,默認有3個gradle文件,分別位於:

  • /settings.gradle 
  • /build.gradle
  • /app/build.gradle

2.gradle內容

  • settings.gradle 默認只有一行代碼,即:
    include ':app'

    新創建的項目只有app一個子項目。如果在project里添加了子項目(Module),按理需要在settings.gradle里添加相應子項目名稱,如:

    include ':app', ':androidlibrary'

    提示:當你添加一個Module后,最新版的Android Studio會自動在settings.gradle里配置好,Amazing。

  • 根目錄的build.gradle 就比較豐富了,默認有三個“節點”,buildscriptallprojectstask clean。
    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:1.3.0'
        }
    }
    
    allprojects {
        repositories {
            jcenter()
        }
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    

  buildscript下的第一個子“節點”是聲明倉庫源,默認是jcenter,之前版本則是mavenCentral,也可以兩個center共存。jcenter可以理解成是一個新的中央遠程倉庫,兼容maven中心倉庫,而且性能更優。第二個子“節點”是聲明Android gradle plugin的版本,Android Studio 1.5版默認是gradle 1.3。

  allprojects下是聲明了所有project默認的倉庫源。

  task clean聲明了一個任務,任務名叫clean(也可以改為其它),任務類型是Delete(也可以是Copy),就是每當修改settings.gradle文件后點擊同步,就會刪除rootProject.buildDir下的文件(實際上我看到的效果是清除了External Libraries里的包,然后又添加了一次)。

  • app/build.gradle 就是默認android子項目的gradle文件了,也是三個小節點:apply、android和dependencies。
apply plugin: 'com.android.application'

android {
    compileSdkVersion 15
    buildToolsVersion '19.1.0'
    defaultConfig {
        applicationId "com.nait.picassodemo"
        minSdkVersion 4
        targetSdkVersion 15
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.squareup.okhttp:okhttp:2.5.0'
    compile 'com.umeng.analytics:analytics:5.6.1'
    testCompile 'junit:junit:4.12'
}

 

appley節點:apply plugin: 'com.android.application'

以上語句中的apply是一個方法,給它傳遞了一個參數plugin,plugin 的值是'com.android.application'。如果有多個參數,則以逗號隔開,例如:compile name: 'volley', ext: 'aar'。

android節點:前面部分很好理解,從字面意思就能了解。buildTypes默認是release(也可以添加debug),minifyEnabled表示是否需要混淆,proguardFiles 表示混淆配置文件的名稱。productFlavors表示多渠道包(以后深入學習后再寫)。

dependencies節點:com.開頭的部分是Demo項目中添加的引用包,規則是namesapce:package name:version,其它兩行是項目創建后默認添加的。

 

參考文檔:

http://www.cnblogs.com/youxilua/archive/2013/05/22/3092657.html

http://www.blogjava.net/wldandan/archive/2012/07/12/382792.html

http://www.android100.org/html/201502/16/119379.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM