一直據說Gradle很強大,只是偶爾用Android Studio建立Demo的時候看到他一次,今天抽個時間完整記錄一下。java
1.gradle位置android
Android Studio項目建立好以後,默認有3個gradle文件,分別位於:app
/settings.gradlemaven
/build.gradle性能
/app/build.gradle學習
2.gradle內容gradle
settings.gradle 默認只有一行代碼,即:ui
include ':app'spa
新建立的項目只有app一個子項目。若是在project裏添加了子項目(Module),按理須要在settings.gradle裏添加相應子項目名稱,如:debug
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,其它兩行是項目建立後默認添加的。
固然,開發完APP也是須要進行全方位的檢測:www.ineice.com