Android中apk多渠道打包----友盟打包实现步骤
来源:互联网 发布:linux安装hadoop2.7 编辑:程序博客网 时间:2024/05/15 04:27
导入友盟相关jar包的前提下:
1.按照umeng的要求,manifest文件中需要有
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
这段配置,value那里就是wandoujia,360之类的渠道名称,但是我们在这里不会去写渠道名,写的是一个占位符,后面gradle编译的时候会动态的替换掉它。
2,在module(一般也就是app)的build.gradle的android{}中添加如下内容:
productFlavors{
wandoujia{
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
xiaomi{
manifestPlaceholders=[UMENG_CHANNEL_VALUE: "xiaomi"]
}
}
productFlavors是android节点的一个自节点。你需要打什么渠道的包,就在这里按umeng的要求用渠道名给UMENG_CHANNEL_VALUE赋值。
3.优化1:上面只是两个渠道,如果有几十个渠道,都这样写,重复的东西太多,观察到每个渠道就是flavor的名称,所以修改如下:
productFlavors{
wandoujia{
//manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
xiaomi{
//manifestPlaceholders=[UMENG_CHANNEL_VALUE: "xiaomi"]
}
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
3.优化2:上面经过签名打包后生成的apk的名称是有默认命名规则的,如:xxx-xiaomi-release.apk但是我们想包含版本信息如:xxx-xiaomi-release-1.0.apk,所以最终打包脚本如下:
productFlavors{
wandoujia{
//manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
xiaomi{
//manifestPlaceholders=[UMENG_CHANNEL_VALUE: "xiaomi"]
}
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}.apk")
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
4.获取渠道
在代码中我们可以通过读取mate-data信息来获取渠道,然后添加到请求参数中,获取方法如下:
private String getChannel() {
try {
PackageManager pm = getPackageManager();
ApplicationInfo appInfo = pm.getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
return appInfo.metaData.getString("UMENG_CHANNEL");
} catch (PackageManager.NameNotFoundException ignored) {
}
return "";
}
5.执行签名打包:(参考http://blog.csdn.net/zhaihaohao1/article/details/51167847)
这时候你去app/build/outputs/apk中就能看到自动打好的渠道包了。
参考视频 http://ke.atguigu.com/course/128
- Android中apk多渠道打包----友盟打包实现步骤
- 友盟多渠道打包 Android Apk
- android apk多渠道打包
- Android多渠道打包APK
- Android apk多渠道 打包
- Android多渠道打包apk
- Android Apk 多渠道打包
- Java实现Android APK多渠道打包
- 脚本实现apk多渠道打包
- Android APK签名及友盟多渠道打包
- Android 基于友盟统计的多渠道打包APK
- Android APK打包(多渠道)
- android 二次打包完成apk多渠道打包
- Android项目APK打包And多渠道打包
- Android多渠道打包(二):友盟多渠道打包
- Android Studio 友盟api实现apk多渠道打包
- Python实现Android Apk 加固及多渠道打包
- Apk打包与多渠道打包
- Java运算符_动力节点Java学院整理
- 构造.析构.深拷贝和浅拷贝
- forword与redirect的区别
- java中方法详解
- JavaScript基础之选择器
- Android中apk多渠道打包----友盟打包实现步骤
- JavaScript实现回到顶部/底部的两种方法
- opencv 人脸检测源码解析
- TensorFlow(三)可视化
- leetcode
- C++面试题(~10)
- java工程师必修之路
- eleasticsearch 安装配置
- gitlab使用说明 与Tortoise Git一起使用