手把手教你AndroidStudio多渠道打包
最近不断有朋友向我咨询AndroidStudio多渠道的打包方法,今天整理一下之前积累的打包套路,写一篇文章,手把手的教给大家。
说到多渠道,这里不得不提一下友盟统计,友盟统计是大家日常开发中常用的渠道统计工具,而我们的打包方法就是基于友盟统计实施的。按照友盟官方文档说明,渠道信息通常需要在AndroidManifest.xml中配置如下值:
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>
上面的value值Channel_ID就是渠道标识。我们的期望的就是在编译时候这个值能够自动变化以满足区分多渠道的需求。
(一)在AndroidManifest.xml里设置动态渠道变量
<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />
(二)在build.gradle设置productFlavors
这里假定我们需要打包的渠道为酷安市场、360、小米、百度、豌豆荚 android { productFlavors { kuan { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "kuan"] } xiaomi { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"] } qh360 { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qh360"] } baidu { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"] } wandoujia { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"] } } }
或者批量修改
android { productFlavors { kuan {} xiaomi {} qh360 {} baidu {} wandoujia {} } productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] } }
所谓ProductFlavors其实就是可定义的产品特性,配合 manifest merger 使用的时候就可以达成在一次编译过程中产生多个具有自己特性配置的版本。上面这个配置的作用就是,为每个渠道包产生不同的 UMENG_CHANNEL_VALUE 的值。
(三)执行打包操作
在AndroidStudio菜单栏点击Build菜单–>Generate signed APK–>选择key,并输入密码
然后下一步,选择打包渠道
最后点击完成按钮
上图可以看到,我们已经成功的将五个渠道包打好。
(四)执行打包命令 ./gradlew assembleRelease
除了使用AndroidStudio图形打包操作以外,我们也可以使用命令行进行打包操作,具体步骤如下:
注意,此时这里的APK包名显示为unsigned,也就是说未签名,我们可以继续在build.gradle文件中配置签名信息
signingConfigs { release{ storeFile file("../wooyun_keystore") //签名文件路径 storePassword "123456" keyAlias "123456" keyPassword "123456" //签名密码 } }
这次生成的就是含有签名的渠道包。
// 自定义输出配置,这里我们加上APK版本号1.0 applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.apk')) { // 输出apk名称为wooyun_v1.0_wandoujia.apk def fileName = "wooyun_v${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk" output.outputFile = new File(outputFile.parent, fileName) } } }
如果我们想打包wandoujia渠道的release版本,执行如下命令就好了:
gradlew assembleWandoujiaRelease
如果我们想打包wandoujia渠道的debug版本,执行如下命令就好了:
gradlew assembleWandoujiaDebug
如果我们只打wandoujia渠道版本,则:
gradlew assembleWandoujia
此命令会生成wandoujia渠道的Release和Debug版本
同理我想打全部Release版本:
gradlew assembleRelease
这条命令会把Product Flavor下的所有渠道的Release版本都打出来。
下面是我个人的build.gradle配置文件,分享给大家,以作参考
apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.wooyun.castiel" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" } //签名 signingConfigs { debugConfig { storeFile file("../wooyun_keystore") //签名文件 storePassword "123456" keyAlias "123456" keyPassword "123456" //签名密码 } release{ storeFile file("../wooyun_keystore") //签名文件 storePassword "123456" keyAlias "123456" keyPassword "123456" //签名密码 } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' // 自定义输出配置 applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.apk')) { // 输出apk名称为wooyun_v1.0_wandoujia.apk def fileName = "wooyun_v${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk" output.outputFile = new File(outputFile.parent, fileName) } } } } } productFlavors { kuan {} xiaomi {} qh360 {} baidu {} wandoujia {} } productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' }
上面的signingConfigs配置中,可以写两个代码块,分别名为debugConfig和releaseConfig,并在其中写好一个完整签名需要的keyAlias、keyPassword、storeFile file、storePassword。
然后在buildTypes中,分两个代码块,分别是debug时用的,和release时用的。在其中引用刚刚写好的debugConfig和releaseConfig即可。
注意:signingConfigs代码块一定要写在buildTypes前面,否则会报下面这种错:
Could not find property 'debugConfig' on SigningConfig container.
- 1
签名密码写在gradle中不安全,故最好在打包上线的时候将相关代码注释掉。
参考链接:http://stormzhang.com/devtools/2015/01/15/android-studio-tutorial6/
本文转自 一点点征服 博客园博客,原文链接:http://www.cnblogs.com/ldq2016/p/7568906.html,如需转载请自行联系原作者

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android精选完整源码之控件指示器视频压缩日历源码!
Android框架+常用控件汇总-侧滑、上下拉加载、tab、各种ui 仿今日头条顶部导航指示器源码 android视频录制 视频压缩的源码 android滑动选择的尺子view源码 文件选择器 单片机和安卓应用,传感器 OpenglCamera android一款仿miui小米日历源码 android各种各样的跑马灯样式 Android高仿知乎的侧滑删除源码
- 下一篇
android UI设计属性中英对照表(未修订)
英语 中文 备注 plurals 多义性 Animator 动画师 android 3.0以上版本才能用 ordering 调整 sequentially 顺序地 together 同时 duration 持久时间 tween 补间 Alpha 透明度 Scale 比例尺 Degree 度数 rotate 旋转 interpolator 插补器 translate 转换,说明 accelerate 加速 decelerate 减速 frame 帧 gravity 重力 clip 剪辑 vertical 垂直 horizontal 水平 clamp 固定 mirror 倒影 dimension 尺寸 dither 抖动 图片里的术语(例如一张26万色的图片放在了6万色的屏幕中就会发生抖动) linear 直线 radial 发散 gradient 跛度 sweep 广度 merge 合并 本文转自 liam2199 博客,原文链接:http://blog.51cto.com/youxilua/772693 如...
相关文章
文章评论
共有0条评论来说两句吧...