开始我们的配置
1.首先是友盟渠道,相信很多公司产品都融入了这个
把[UMENG_CHANNEL]()下面的值改为 [${UMENG_CHANNEL_VALUE}]()
1
2
3
|
<meta-data
android:name=
"UMENG_CHANNEL"
android:value=
"${UMENG_CHANNEL_VALUE}"
/>
|
然后打开app目录下的build.gradle文件配置渠道
1
2
3
4
5
6
7
8
9
10
11
|
productFlavors {
abc {
manifestPlaceholders = [UMENG_CHANNEL_VALUE:
"abc"
]
}
baiduyun {
manifestPlaceholders = [UMENG_CHANNEL_VALUE:
"baiduyun"
]
}
wandoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE:
"wandoujia"
]
}
}
|
2.多渠道配置结束,就是这么简单,然后我们打包的时候肯定都希望能够区分每一个包是哪个渠道的,添加下面的代码可以实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
buildTypes {
release {
minifyEnabled
true
//是否混淆
zipAlignEnabled
true
shrinkResources
true
//移除未使用的资源文件
proguardFiles getDefaultProguardFile(
'proguard-android.txt'
),
'proguard-rules.pro'
applicationVariants.all { variant ->
variant.outputs.each { output ->
if
(output.outputFile !=
null
&& output.outputFile.name.endsWith(
'.apk'
)) {
File outputDirectory =
new
File(outputFile.parent);
def fileName
if
(variant.buildType.name ==
"release"
) {
fileName =
"appName_v${defaultConfig.versionName}_${packageTime()}_${variant.productFlavors[0].name}.apk"
}
else
{
fileName =
"appName_v${defaultConfig.versionName}_${packageTime()}_beta.apk"
}output.outputFile =
new
File(outputDirectory, fileName)
}
}
}
}
}
|
然后点击 Sync Now
然后报错了是吧?恩,packageTime()这个方法都还没给你,放在顶部即可
1
2
3
|
def packageTime() {
return
new
Date().format(
"yyyy-MM-dd"
, TimeZone.getTimeZone(
"UTC"
))
}
|
3.Sync Now然后按照下面步骤打包吧
1
2
3
4
5
|
Build->Clean Project
Build->Rebuild Project
Build->Generate Singned APK...
->next配置你的签名配置->next 解释在下图
->finish
|
完了就会在文件夹看到你需要的包了