Android studio之多渠道打包

最近做项目,接收了一项任务——多渠道打包
于是乎找找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三部分,代码示例如下:

<manifest……>
<uses-sdk android:minSdkVersion="4"></uses-sdk>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<application ……>
……
<activity ……/>
<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"></meta-data>
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>
</application>    
</manifest>

主要部分就是将key替换成自己的,至于Channel ID,不用急,我们稍后再讲。

第一步 在AndroidManifest.xml里配置PlaceHolder

<meta-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 && outputFile.name.endsWith('.apk')) {
                        // 输出apk名称为ruijie_v1.0_wandoujia.apk
                        def fileName = "ruijie_v${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"
                        output.outputFile = new File(outputFile.parent, fileName)
                    }
                }
            }

我们只需加入以上的代码,就可以修改打包出来的APK的名字,那么让我们执行以下命令行,再看看效果

这里写图片描述

这样,我们就可以根据自己的需求,修改生成的APK的名字了。

差点忘记了。关于友盟的统计,需要在每个Activity的onResume方法中调用 MobclickAgent.onResume(Context) , 即在onPause方法中调用 MobclickAgent.onPause(Context)。那么我们可以在自己封装的baseActivity里面添加以下代码即可。

public void onResume() {
    super.onResume();
    MobclickAgent.onResume(this);
}
public void onPause() {
    super.onPause();
    MobclickAgent.onPause(this);
}

PS:多渠道打包之后,可以在友盟官网对自己的应用进行查看,里面有对应用的相关数据的分析,例如日活跃量,APK打开的人数之类,这里不做多余的解释啦。

今天的教程就到这了,下一章我们再讲解一下Android studio的签名配置。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值