全局設(shè)置
如果有很多項(xiàng)目,可以設(shè)置全局來(lái)統(tǒng)一管理版本號(hào)或依賴(lài)庫(kù)乐设,根目錄下build.gradle下:
ext {
compileSdkVersion = 23
buildToolsVersion = "23.0.2"
minSdkVersion = 14
targetSdkVersion = 23
}
app/build.gradle
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId "com.wuxiaolong.gradle4android"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
}
可以在根目錄下建個(gè)config.gradle讼庇,然后只需在根目錄下build.gradle最頂部加上下面一行代碼,然后同步下近尚,意思就是所有的子項(xiàng)目或者所有的modules都可以從這個(gè)配置文件里讀取內(nèi)容蠕啄。
apply from: "config.gradle"
config.gradle
ext {
android = [
compileSdkVersion: 23,
buildToolsVersion: "23.0.2",
minSdkVersion : 14,
targetSdkVersion : 22,
]
dependencies = [
appcompatV7': 'com.android.support:appcompat-v7:23.2.1',
design : 'com.android.support:design:23.2.1'
]
}
app/build.gradle
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId "com.wuxiaolong.gradle4android"
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion
versionCode 1
versionName "1.0"
}
...
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile rootProject.ext.dependencies.appcompatV7
compile rootProject.ext.dependencies.design
}
自定義BuildConfig
實(shí)際開(kāi)發(fā)中服務(wù)器可能有正式環(huán)境和測(cè)試環(huán)境,gradle可以通過(guò)buildConfigField來(lái)配置戈锻。
defaultConfig {
buildConfigField 'String','API_SERVER_URL','"http://wuxiaolong.me/"'
}
buildConfigField 一共有3個(gè)參數(shù)歼跟,第一個(gè)是數(shù)據(jù)類(lèi)型,和Java的類(lèi)型是對(duì)等的格遭;第二個(gè)參數(shù)是常量名哈街,這里是API_SERVER_URL;第三個(gè)參數(shù)就是你要配置的值拒迅。
如圖路徑下就有個(gè)常量API_SERVER_URL骚秦,如何在代碼取得這個(gè)常量值:
Log.d("wxl", "API_SERVER_URL=" + BuildConfig.API_SERVER_URL);
啟用proguard混淆
一般release發(fā)布版本是需要啟用混淆的,這樣別人反編譯之后就很難分析你的代碼璧微,而我們自己開(kāi)發(fā)調(diào)試的時(shí)候是不需要混淆的作箍,所以debug不啟用混淆。對(duì)release啟用混淆的配置如下:
android {
buildTypes {
release {
//是否啟動(dòng)混淆
minifyEnabled true
//是否移除無(wú)用資源文件前硫,shrinkResources依賴(lài)于minifyEnabled胞得,
//必須和minifyEnabled一起用
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
minifyEnabled為true表示啟用混淆,proguardFile是混淆使用的配置文件开瞭,這里是module根目錄下的proguard-rules.pro文件