Android 多渠道(友盟)打包教程分享

我们在 app 正式发布的时候一定会使用正式签名的方式来打包,这种方式只能生成唯一的一个包,但是如今的应用商店非常多,如:小米、OPPO、360、百度、豌豆荚、应用宝等等。而我们只有一个 apk 文件要投入到这么多的应用商店中去,如果你的公司不需要统计每个应用商店的实际下载使用量的话,那倒是不会有这样的问题。

但是,如果你的公司就是需要统计每个商店的实际下载使用情况,那么你将如何去识别当前用户是从哪一个商店下载来的呢?出现问题原因是:我们使用的 apk 安装包当前仅有一个。

假设,我们可以向 apk 内植入一个字符串,比如我给发布到小米商店的 apk 中植入“xiaomi” ,然后拷贝一份 apk 安装包发布到小米商店中,给百度植入“baidu”,然后也拷贝一份发布到百度商店中,然后通过 JAVA 代码在用户从某一个商店中下载并使用时,我获取这个字符串,然后返回给后台,这不就可以知道用户从哪个商店下载了吗!

多渠道就是指我们的应用程序可以从不同的商店下载,不同的应用商店就是不同的渠道。那你可能会有疑惑,我们为什么要知道用户从哪个渠道下载的呢?

这个问题其实与利益息息相关,你这样想。假如你写一个 app 发布到不同的商店上,你肯定会关注究竟哪一个商店的用户使用量比较多、下载量比较大的问题,你可能手头没有那么多经济去每一个商店平台都推广你的 app ,所以你要记录哪个商店用户量最大,然后着重推广。

友盟打包

说了这么多,相信你已经明白多渠道打包的重要性了。既然我们可以向每一个 apk 中植入一个标志这商店名称的字符串,那么如果一个一个的来的话,显然是一个庞大的工作,没有多大实际意义,而且 apk 文件是无法直接向里面添加一个外部文件的,你需要其他的手段来实现,那么我们先来看友盟多渠道打包的方式。

友盟的实现方式是通过 xxx.keystore 文件来进行一个一个的压包,通过代码的方式来分别生成一个你指定的应用商店的对应 apk 文件。这种方式会比较慢,如果你的需求是要投入到几百上千个商店的话,显然生成文件的速度会非常慢。但如果你的需求量在几十上百,我建议你可以使用友盟来打包,公司也通常使用这种方式。

那么我们看看如何实现吧!

一、引入友盟支持

在工程列表(AndroidManifest.xml)文件中加入友盟提供的支持,这个与 Activity 并列层级。

<!-- 添加友盟支持 -->
<meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UMENG_CHANNEL"/>

二、添加闭包

然后在 app 的 build.gradle 中添加以下代码,目的是为了生成对应的应用商店的 apk ,添加位置在 android 闭包下,以下代码不难理解。

注意:在 gradle 中是无法使用数字开头的名字,所以你应该懂得变更一下。

 //友盟闭包
 productFlavors {
 wandoujia {}
 xiaomi {}
 baidu {}
 yingyongbao {}
 //注意 360:gradle 中不能以数字开头
 _360{}
 }
 productFlavors.all { flavor ->
 flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
 }

这里注意一下,也许你会报这个错误:

ERROR: All flavors must now belong to a named flavor dimension.

解决方法就是在上面的 defalutConfig 闭包中添加内容:

flavorDimensions "versionCode"

然后再同步一下就没有问题了。

三、签名打包

接下来就是打包的过程了,很简单,我们只需要选中如下图中的各个应用商店的版本即可,然后它就会在你设定的目录下生成对应的 apk 文件了。

如果对签名打包不懂的可以看这篇文章:Android App正式签名打包流程

这就是我的项目生成的对应的 apk 文件所在的文件夹,点进去就会看到安装包啦。

四、添加版本号

当然了,你可能希望加入当前 app 的开发版本号,这样就对每个版本升级时所用的 apk 包就一目了然了。这是你需要把当前 app build.gradle 中的 deflautConfig闭包下的 versionName 给设置到打包生成的 apk 名中。那代码是这样的:

 //为多渠道包添加 app 版本号
 applicationVariants.all { variant ->
 variant.outputs.all { output ->
  def outputFile = output.outputFile
  if (outputFile != null && outputFile.name.endsWith(".apk")) {
  def fileName = outputFile.name.replace(".apk", "-${ defaultConfig.versionName }.apk")
  outputFileName = fileName;
  }
 }
 }

这是一段 groovy 语言,通常在 jvm 中使用,可以很好的和 java 代码配合。你只需要将它添加到刚刚写的友盟闭包后面就可以了,如这样:

然后你再一次打包一下,就可以在目录中看到 apk 文件了,一个是刚刚没有添加的默认版本,一个是拥有版本号。

注意:这里会有一个警告信息,内容是这样:

WARNING: API 'variantOutput.getPackageApplication()' is obsolete and has been replaced with 'variant.getPackageApplicationProvider()'.It will be removed at the end of 2019.

它是说这个 API 在 2019 年末将要被替换成后面的一个,不过别担心,只要你在升级 gradle 的时候注意一下就好了,在未来它要被替换的时候,你也要做出相应的更改!

五、获取渠道信息

到目前为止,我们还没真正的看到这样打包有什么用处。不着急,我们需要将每个 apk 文件发布到对应的商店以后才需要获取这个字符串,这样才能够真正的识别用户在哪个商店中下载来的,然后在用户使用量最大的商店中去大力推广。那么如何获取这个字符串呢?

我就简单一点,在 MainActivity 中直接获取这个字符串了,在实际开发中,显然是要把这个信息传给后台进行统计的,不然没有任何意义。我们的获取代码如下:

还记得我们在 meta-data 中定义了 UMENG_CHANNEL 属性的名字吗,现在我们就可以利用它来获取 字符串 了。

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;

public class ChannelUtil {
 public static String getChannel(Context context) {
 PackageManager pm = context.getPackageManager();
 ApplicationInfo appInfo = null;
 try {
  appInfo = pm.getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
  return appInfo.metaData.getString("UMENG_CHANNEL");
 } catch (PackageManager.NameNotFoundException e) {
  e.printStackTrace();
 }
 return "";
 }
}

然后我在启动 app 的时候使用 toast 验证一下是否如我们想象的一样:

获取渠道信息

结果没错,相信大家已经明白了多渠道打包的作用了,它的本质就是在签名打包的时候嵌入一个字符串,通过不同的 apk 包对应不同的商店名,然后上传到相应的商店,最后获取这个字符串值返回给后台。那么,本篇关于多渠道打包的内容就这样讲完了。

以上这篇Android 多渠道(友盟)打包教程分享就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • AndroidStudio Gradle基于友盟的多渠道打包方法

    AndroidStudio由于使用了gradle的进行项目构建,使我们开发app方便很多,今天我就给大家列出几点是用gradle的方便之处. 一.AndroidStudio Gradle第三依赖统一管理 二.AndroidStudio Gradle基于友盟的多渠道打包 三.AndroidStudio安全管理签名文件keystroe和签名密码 好久没写博客了,今天写一篇关于多渠道打包的文章. 首先我们要下载友盟的jar包,然后照着文档配置即可.(这里就不过多讲解了,直接看我的代码) 文档地址:ht

  • 使用Android Studio Gradle实现友盟多渠道打包

    最新项目中要求在友盟后台看到不同渠道的统计,Android大大小小的应用市场要几百个,要一个一个手工打包那一天也干不完,还好是有大牛的,弄出了好多解决方法,就Gradle做一下记录和分享,首先看一些理论知识: 1.应用的打包签名 什么是打包? 打包就是根据签名和其他标识生成安装包. 签名是什么? 1.在android应用文件(apk)中保存的一个特别字符串 2.用来标识不同的应用开发者:开发者A,开发者B 3.一个应用开发者开发的多款应用使用同一个签名 就好比是一个人写文章,签名就相当于作者的署

  • Android 多渠道(友盟)打包教程分享

    我们在 app 正式发布的时候一定会使用正式签名的方式来打包,这种方式只能生成唯一的一个包,但是如今的应用商店非常多,如:小米.OPPO.360.百度.豌豆荚.应用宝等等.而我们只有一个 apk 文件要投入到这么多的应用商店中去,如果你的公司不需要统计每个应用商店的实际下载使用量的话,那倒是不会有这样的问题. 但是,如果你的公司就是需要统计每个商店的实际下载使用情况,那么你将如何去识别当前用户是从哪一个商店下载来的呢?出现问题原因是:我们使用的 apk 安装包当前仅有一个. 假设,我们可以向 a

  • Android 项目正式签名打包教程分享

    大家在开发安卓应用的时候,在调试阶段通常都是通过 run 的方式发布到模拟器或者真机上,我们知道 android 应用打包后的后缀名是 .apk 文件..apk 文件是一种压缩包,类似 .zip 文件,我们可以通过强制更改它的后缀为 .zip 来解压 apk 获取包里的内容,以这种方式可以验证它其实就是一个压缩包. 在 run 的时候就是将我们所写的代码打包为 apk 文件,打包就是根据签名.标识等信息生成的一个安装包,我们在包里嵌入作者的信息.公司信息等,可以具有唯一的辨识行为,同时也可以维护

  • Android使用友盟集成QQ、微信、微博等第三方分享与登录方法详解

    最近项目需要加入第三方分享和登录功能,之前其他项目的第三方分享和登录一直都使用ShareSDK实现的.为了统一使用友盟的全家桶,所以三方分享和登录也就选择了友盟.这里记录一下完整的集成与使用流程. 1.申请友盟Appkey 直接到友盟官网申请即可 2.下载SDK 下载地址:http://dev.umeng.com/social/android/sdk-download 下载的时候根据自己需求进行选择,我这里选择选择的是精简版(包含常用的分享与登录功能),只测试微信,QQ,新浪微博. 下载后解压出

  • Android 第三方登录、分享(ShareSDK、友盟)

    为下边的项目做准备,写一个第三方登录.分享的demo.分别使用sharesdk和友盟来实现. 先说一下我对两者的使用上的感觉,个人感觉sharesdk比友盟更好一点,好在哪里呢?好在人工服务上.在集成的过程中遇到了各种问题,但是sharesdk的人工服务做的很好,能给答疑解惑,提供解决问题的方法! 接下来上代码(本文使用android studio开发,sharesdk版本v2.7.7,友盟版本v6.0.0): 一.使用sharesdk(sharesdk版本v2.7.7)来集成: 1.要去官网:

  • Android 友盟第三方登录与分享的实现代码

    前言 最近项目中又一次需要集成友盟的三方登录与分享,之前没有记录过,所以这次来写一下... 准备工作 1.注册友盟账号创建应用,获取key:申请地址 http://www.umeng.com 2.对对应的平台(腾讯.微信.新浪等等)申请第三方账号,获取key和密码 集成步骤 因为shareSDK分享与第三方登录集成方式类似(共用jar包),所以我就一起说了. 1.下载shareSDK分享的SDK 下载地址: https://developer.umeng.com/sdk 2.导入jar与res

  • Android多渠道打包总结(推荐)

    多渠道打包一般应用于向不同应用市场提交app后用来统计不同渠道下载量等一些信息.一般集成友盟sdk(同类型的sdk还有 诸葛io,量江湖等sdk),不同sdk集成方式大同小异,可去各自官网查看详细文档.本文以友盟sdk为例. 渠道:各种应用市场比如 华为应用市场,小米应用市场, 积分墙(花钱的推广渠道)等. 一,android自带gradle打包 首先集成友盟sdk,集成方式参照友盟sdk集成,在项目的build.gradle文件中加入以下代码 productFlavors { yingyong

  • Android多渠道打包的方法步骤

    本文介绍了Android多渠道打包的方法步骤,分享给大家,具体如下: 1.生成签名文件 点击 Build -> Generate Signed APK: 2.创建一个签名 红色填写部分需要认真填写,并牢记,其余部分随意填写 有了签名,单个app打包我就不详细说了,具体说下多渠道打包的步骤 2.多渠道打包 作用:就是根据不同的渠道值,去具体分析每个渠道的用户情况 步骤一: 在AndroidManifest.xml的application标签里添加一个meta-data标签定义 <meta-dat

  • Android打包篇:Android Studio将代码打包成jar包教程

    一.新建一个as项目,再新建一个model模块 然后再app中的build.gradle中添加model的依赖.然后编译项目. 二.编译完成后,打开model下的build--intermediates--bundles目录,目录下有两个文件夹,debug,default,在default文件夹下有一个classess.jar,就是编译完成的jar包, 这里需要主要的是:因为我们使用的 as 版本不一致,所以会导致classess.jar包的目录页会不一样,不过最终的目录还是在build--in

随机推荐