使用Gradle动态配置资源,gradle动态资源
#使用Gradle动态配置资源
***
>关键词:Gradle 多渠道打包 动态更换资源
Eclipse中可以使用Ant动态替换文件中的字符串,或者替换文件实现动态更换项目资源,实现快速打包。
例如:可以实现多渠道打包,debug版与release版访问不同服务器可以动态替换,多个app差异只是 **App名字** , **App图标** 或者 **App访问的服务器**不同,这些使用gradle可以更方便的做到,而且gradle**不是替换**资源,而**是配置**资源。
- 先来一个默认的
```
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "net.ljt.gradledemo"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.1.0'
testCompile 'junit:junit:4.12'
}
```
>在默认的基础上创建
```
android {
...
productFlavors{
}
...
}
```
> 在productFlavors里面创建不同包的标签
例如:
```
productFlavors {
xiaomi {}
baidu {}
huawei {}
yingyongbao {}
_360{}
}
```
当然也可以创建其他非应用商店的标签,例如你要打包多个不同名字的apk,那么就用不同的名字作标签
```
productFlavors {
xiaomi {}
baidu {}
huawei {}
yingyongbao {}
_360{}
gradle{}
gradledemo{}
}
```
> 在标签中指定需要替换的资源
- 在这里你可以指定你的包名,版本号,版本ID,签名文件等内容
```
android {
...
defaultConfig {
applicationId "net.ljt.gradledemo"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
signingConfigs {
xiaomi {
keyAlias 'xiaomi'
keyPassword 'xiaomi123'
storeFile file('xiaomi.keystore')
storePassword 'xiaomi123'
}
baidu {
keyAlias 'baidu'
keyPassword 'baidu123'
storeFile file('baidu.keystore')
storePassword 'baidu123'
}
}
productFlavors {
xiaomi {
applicationId "net.ljt.gradle.xiaomi"
minSdkVersion 15
targetSdkVersion 25
versionCode 3
versionName "1.2"
signingConfig signingConfigs.xiaomi
}
baidu {
applicationId "net.ljt.gradle.baidu"
minSdkVersion 15
targetSdkVersion 24
versionCode 2
versionName "1.1"
signingConfig signingConfigs.baidu
}
huawei {}
yingyongbao {}
_360{}
gradle{}
gradledemo{}
}
...
}
```
如果你的flavor里面只是替换非常简单的字符串,例如渠道号,就可以简略的这样写
```
productFlavors {
xiaomi {}
baidu {}
huawei {}
yingyongbao {}
_360{}
gradle{}
gradledemo{}
}
//使用循环遍历所有flavor
&n