1.Project的build.gradle文件

?2. Module下的build.gradle(android{}閉包):這個閉包主要為了配置項目構建的各種屬性:
? ? 2.1?添加signingConfigs{}閉包:


2.2、compileSdkVersion:設置編譯時用的Android版本
2.3、buildToolsVersion:設置編譯時使用的構建工具的版本,Android Studio3.0后去除此項配置
2.4、defaultConfig{}閉包:

? ??applicationId:指定了項目的包名。
? ??minSdkVersion:指定項目最低兼容的版本,如果設備小于這個版本或者大于maxSdkVersion(一般不用)將無法安裝這個應用,這里指定為16,表示最低兼容到Android 4.1系統(tǒng)。
? ??targetSdkVersion:指定項目的目標版本,表示在該目標版本上已經(jīng)做過充分測試,系統(tǒng)會為該應用啟動一些對應該目標系統(tǒng)的最新功能特性,Android系統(tǒng)平臺的行為變更,只有targetSdkVersion的屬性值被設置為大于或等于該系統(tǒng)平臺的API版本時,才會生效。例如,若指定targetSdkVersion值為22,則表示該程序最高只在Android5.1版本上做過充分測試,在Android6.0系統(tǒng)上(對應targetSdkVersion為23)擁有的新特性如系統(tǒng)運行時權限等功能就不會被啟用。
? ??versionCode:表示版本號,一般每次打包上線時該值只能增加,打包后看不見。
? ??versionName:表示版本名稱,展示在應用市場上。
? ??testInstrumentationRunner?"android.support.test.runner.AndroidJUnitRunner"表明要使用? ????AndroidJUnitRunner進行單元測試。
2.5、 buildTypes{}閉包:這個閉包主要指定生成安裝文件的主要配置,一般包含兩個子閉包,一個是debug閉包,用于指定生成測試版安裝文件的配置,可以忽略不寫;另一個是release閉包,用于指定生成正式版安裝文件的配置。兩者能配置的參數(shù)相同,最大的區(qū)別默認屬性配置不一樣,兩種模式支持的屬性配置如下圖:

2.6、sourceSets{}閉包:配置目錄指向

?配置 jniLibs.srcDirs = ['libs'],可以在Android studio的Android視圖下生成jniLibs文件夾,可以方便我們存放jar包和庫文件,其中Android視圖下的jniLibs和project視圖下的libs指向同一文件夾(app→libs)
2.7、packagingOptions{}閉包:打包時的相關配置
當項目中依賴的第三方庫越來越多時,有可能會出現(xiàn)兩個依賴庫中存在同一個(名稱)文件。如果這樣,Gradle在打包時就會提示錯誤(警告)。那么就可以根據(jù)提示,然后使用以下方法將重復的文件剔除,比較常用的是通過exclude去除重復的文件,例如:

2.8、productFlavors{}閉包:多個渠道配置
這個配置是經(jīng)常會使用到的,通常在適配多個渠道的時候,需要為特定的渠道做部分特殊的處理,比如設置不同的包名、應用名等。場景:當我們使用友盟統(tǒng)計時,通常需要設置一個渠道ID,那么我們就可以利用productFlavors來生成對應渠道信息的包,如:

當然也有更簡潔的方式:

配置完之后,在命令行窗口中(Terminal)中輸入gradlew assembleRelease(windows)即可開始打包,在Mac系統(tǒng)中對應指令應該是./gradlew assembleRelease。當然,如果想要debug版本的包,將指令中assembleRelease改為assembleDebug即可。最后生成的包還是在app/build/outputs/apk中,默認命名格式如app-wandoujia-release-unsigned.apk,在module的Build Variants中可以選擇相應的渠道。
注:Android Studio3.0需在主app的build.gradle里面的
defaultConfig {
targetSdkVersion:***
minSdkVersion :***
versionCode:***
versionName :***
//版本名后面添加一句話,意思就是flavor dimension 它的維度就是該版本號,這樣維度就是都是統(tǒng)一的了
flavorDimensions "versionCode"
}
2.9、lintOptions{}閉包:代碼掃描分析
Lint 是Android Studio 提供的 代碼掃描分析工具,它可以幫助我們發(fā)現(xiàn)代碼結構/質量問題,同時提供一些解決方案,而且這個過程不需要我們手寫測試用例。
Lint 發(fā)現(xiàn)的每個問題都有描述信息和等級(和測試發(fā)現(xiàn) bug 很相似),我們可以很方便地定位問題,同時按照嚴重程度進行解決。

3、dependencies{}閉包:
????該閉包定義了項目的依賴關系,一般項目都有三種依賴方式:本地依賴、庫依賴和遠程依賴。本地依賴可以對本地的jar包或目錄添加依賴關系,庫依賴可以對項目中的庫模塊添加依賴關系,遠程依賴可以對jcener庫上的開源項目添加依賴關系。從Android Studio3.0后compile引入庫不在使用,而是通過api和implementation,api完全等同于以前的compile,用api引入的庫整個項目都可以使用,用implementation引入的庫只有對應的Module能使用,其他Module不能使用,由于之前的項目統(tǒng)一用compile依賴,導致的情況就是模塊耦合性太高,不利于項目拆解,使用implementation之后雖然使用起來復雜了但是做到降低偶合興提高安全性。