在讲AS多渠道打包之前,先将一丢丢AS使用的小知识点,防止自己忘记:
AS调试的快捷键:F7(进入方法),F8(按行执行),F9(调到一下个断点)
进入调试模式相信大家都知道:
还有2个小的关于调试的按钮:
还有一个Evaluate Expression我觉得有必要提一下,因为我自己经常用这个:
关于ide的外观的一些设置:
还有一个就是去掉spelling
强迫症标识有哪些波浪线标识受不了。
好了先就说这么多,下面说说多渠道打包。
多渠道打包我个人觉得就是在AndriodManifest.xml文件中添加一个<meta-data>作为标识,而这个<meat-data>作为一个渠道标识。
下面对多渠道打包进行分步骤讲解:
1,在AndroidManifest.xml添加一个<meta-data>标识符作为占位符(这个应用了友盟的统计)。
<meta-data
android:value="${UMENG_CHANNEL}"
android:name="UMENG_CHANNEL"/>
2,对AndroidManifest.xml的<meta-data>占位符进行替换,Gradle的manifestPlaceholders它允许我们动态替换我们在AndroidManifest文件里定义的占位符。
defaultConfig {
manifestPlaceholders = [UMENG_CHANNEL: "develop"]
}
3,定义渠道名,
Android Gradle给我们提供了productFlavors,让我们可以对生成的APK包进行定制,所以就有了多渠道。
//渠道包名
productFlavors {
//360
_360 {}
//安卓市场
andriodmarket {}
//百度
baidu {}
//91助手
_91 {}
//安智市场
anzhimarket {}
//豌豆荚
wandoujia {}
//联想(乐商店)
lenovo {}
//腾讯应用中心(应用宝)
tencent {}
//华为(智汇云)
huawei {}
//neaerme市场(oppo)
oppo {}
//魅族
meizu {}
//小米
xiaomi {}
//vivo
vivo {}
//木蚂蚁
mumayi {}
//搜狗市场
sogou {}
//沃商店
womarket {}
//天翼
tianyimarket {}
//酷传市场
coolchuan {}
//移动
chinamobile {}
//机锋
gfan {}
//pp助手
pp {}
}
有人可能会这样写:
baidu{
manifestPlaceholders.put("UMENG_CHANNEL_VALUE",'baidu')
}
这样如果我有几十个渠道包,就会很麻烦,所以我在网上找到一个更好的方法:
//将ProductFlavor的名字替换mate占位符
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL: name]
}
这样吧
flavorName作为渠道名设置为UMENG_CHANNEL的值。
4,对每一个打的发布apk进行按渠道名和打包日期命名。
得到打包日期的方法:
def buildTime() {
def date = new Date();
def formattedDate = date.format('yyyyMMdd');
return formattedDate
}
更改apk名字的方法:
//重命名输出的apk
applicationVariants.all { variant ->
variant.outputs.each { output ->
if (output.outputFile != null && output.outputFile.name.endsWith('.apk')
&& 'release'.equals(variant.buildType.name)) {
def apkFile = new File(output.outputFile.getParent(),
"tbw_${variant.flavorName}_v${variant.versionName}_${buildTime()}.apk")
output.outputFile = apkFile
}
}
}
这样打包的名称就成了:tbw__360_v2.1.0_20161028.apk这种形式。
好了,as多渠道打包就这么多了。