標籤:
一直聽說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 就比較豐富了,預設有三個“節點”,buildscript、allprojects和task 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
學習Android Studio裡的Gradle