全局設(shè)置
如果有很多項(xiàng)目眯搭,可以設(shè)置全局來統(tǒng)一管理版本號或依賴庫窥翩,根目錄下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"
}
可以在根目錄下建個config.gradle,然后只需在根目錄下build.gradle最頂部加上下面一行代碼鳞仙,然后同步下寇蚊,意思就是所有的子項(xiàng)目或者所有的modules都可以從這個配置文件里讀取內(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í)際開發(fā)中服務(wù)器可能有正式環(huán)境和測試環(huán)境棍好,gradle可以通過buildConfigField來配置仗岸。defaultConfig {
buildConfigField 'String','API_SERVER_URL','"http://wuxiaolong.me/"'
}
buildConfigField 一共有3個參數(shù),第一個是數(shù)據(jù)類型借笙,和Java的類型是對等的扒怖;第二個參數(shù)是常量名,這里是API_SERVER_URL业稼;第三個參數(shù)就是你要配置的值盗痒。
如圖路徑下就有個常量API_SERVER_URL,如何在代碼取得這個常量值:
Log.d("wxl", "API_SERVER_URL=" + BuildConfig.API_SERVER_URL);
啟用proguard混淆
一般release發(fā)布版本是需要啟用混淆的低散,這樣別人反編譯之后就很難分析你的代碼俯邓,而我們自己開發(fā)調(diào)試的時候是不需要混淆的,所以debug不啟用混淆熔号。對release啟用混淆的配置如下:android {
buildTypes {
release {
minifyEnabled true//是否啟動混淆
shrinkResources true //是否移除無用資源文件稽鞭,shrinkResources依賴于minifyEnabled,必須和minifyEnabled一起用
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
minifyEnabled為true表示啟用混淆引镊,proguardFile是混淆使用的配置文件朦蕴,這里是module根目錄下的proguard-rules.pro文件