最近做项目,接收了一项任务——多渠道打包 于是乎找找google,一搜一大堆,不外乎就是用友盟进行多渠道打包。 看了一堆博客,自己总结一下经验,纯当做下笔记。
首先呢,多渠道打包,为的就是统计各个渠道的下载数量,或者新增用户、日活跃量用户的一些相关数据,这就与友盟统计相关了。所以我们用友盟进行多渠道打包就可以了。
那么如何做呢,首先我们进入友盟的官网https://www.umeng.com/ 选择开发者中心,看到如下图片
接着,申请KEY,跟着文档将SDK导入项目即可
然后回到自己的项目,在app的build.gradle添加以下代码:
dependencies { compile 'com.umeng.analytics:analytics:latest.integration'}如果无法正常集成请添加如下代码 :
allprojects { repositories { mavenCentral() }}接着,在AndroidManifest.xml文件下添加以下代码
manifest的配置主要包括添加权限,填写Appkey和填写渠道id三部分,代码示例如下:
……主要部分就是将key替换成自己的,至于Channel ID,不用急,我们稍后再讲。
第一步 在AndroidManifest.xml里配置PlaceHolder
data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />第二步 在build.gradle设置productFlavors
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"] } } }这样,便能动态地替换UMENG_CHANNEL_VALUE的值。 下面提供一种更简便的写法,代码如下:
android { productFlavors { kuan {} xiaomi {} qh360 {} baidu {} wandoujia {} yingyongbao {} } productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] } }两种写法实现的效果都是一样的,代码方面,这里就不多做解释了,有兴趣的自己研究以下。 然后,我们点一下同步按钮
将添加的渠道(xiaomi、qn360)的渠道配置给同步进来。 打开File->Project Structure->Flavors,我们会发现除了默认的defaultConfig,还多出了kuan、qh360之类的flavors。
如果我们想再添加渠道的话,点击图片右上角的“+”号按钮,可以添加新的渠道,与在代码里面实现的效果是一样的。
接着,我们便可以实现多渠道打包
首先,我们先按图片,生成签名
上面两张图转自
http://blog.csdn.net/yy1300326388/article/details/48344411
接下来,我们可以通过两种方式进行多渠道打包,一个是通过图形界面,另一个是通过命令行。 通过图形界面的话,点击上上上图里的Generate Signed APK,然后如下所示
选择刚才自己生成的签名文件,即KEY STORE,然后填写对应的资料,刚才生成签名文件的时候自己写入的。然后点击NEXT
大家可以看到如下,flavors,可以进行选择。然后build type的话可以选择release或者debug。然后再点NEXT,接下来只需默默等待打包完成即可。通过图形界面打包的APK会放置在项目路径下app里面,假如我的项目是with,那么生成的apk会放在with/app下
方法二:使用命令行进行多渠道打包:
打开Android studio,点击左下角的Terminal 如果我们想打包wandoujia渠道的release版本,执行如下命令就好了:
gradlew assembleWandoujiaRelease如果我们想打包wandoujia渠道的debug版本,执行如下命令就好了:
gradlew assembleWandoujiaDebug如果我们只打wandoujia渠道版本,则:
gradlew assembleWandoujia此命令会生成wandoujia渠道的Release和Debug版本 同理我想打全部Release版本:
gradlew assembleRelease当然啦,如果我们想打包全部的Debug版本:
gradlew assembleDebug然后,我们可以在项目的app/build/output/apk下面找到我们打包的apk 我们来试一下 输入gradlew assembleDebug,看看有什么效果
因为打包多了太费时间,所以我把其他渠道的先给屏蔽了,就先打包一个,大家自己操作的时候可以不屏蔽,试试效果
有的人说,这个打包出来的APK名字能不能自定义,否则每次都得手动去改,那就太坑了。 这个问题,当然可以解决了。
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 MobclickAgent.onResume(this);}public void onPause() { super.onPause(); MobclickAgent.onPause(this);}PS:多渠道打包之后,可以在友盟官网对自己的应用进行查看,里面有对应用的相关数据的分析,例如日活跃量,APK打开的人数之类,这里不做多余的解释啦。
今天的教程就到这了,下一章我们再讲解一下Android studio的签名配置。