android Gradle多渠道打包

多渠道打包的用途

  • 用途一:统计不同渠道的数据,方便在推广运营过程中进行有效的渠道比较。来评估渠道的质量。
  • 用途二:对于APP内部有分享邀请好友送奖励的活动,需要进行渠道标识,免除用户手动输入邀请码的流程。
    简化用户注册步骤,减少因注册步骤太繁琐而导致的用户流失。
  • 用途三:部分游戏要进行分渠道的推广,需要进行分包统计。
  • 分包的方式:
    • 客户端打多个渠道包:以下方式都使用
    • 服务器根据需要动态生成渠道包:使用较多的为美团和360的方式
 第一步:在清单文件中定义渠道
  <meta-data 
  android:name="UMENG_CHANNEL" 
  android:value="${UMENG_CHANNEL_VALUE}" />
  第二步:在build.gradle中动态替换渠道值
  productFlavors { 
      wandoujia {
          manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
      }
      baidu {
          manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
      } 
      c360 {
          manifestPlaceholders = [UMENG_CHANNEL_VALUE: "c360"]
      } 
      uc {
          manifestPlaceholders = [UMENG_CHANNEL_VALUE: "uc"]
      } 
  }
  第二步可替换为如下方式:
  productFlavors {

  wandoujia {...}//支持在{}定义属性
  baidu {...}
  c360 {...}
  uc {...}

  productFlavors.all { flavor ->
      flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
  }
  
  }
  
  <!--1、添加channels.properties渠道信息配置文件-->
  #默认渠道
  channel.default=paojiao
  #全部渠道列表
  channel.list=baidu,c360,uc12345
  apply from: "../channels.gradle"1
  productFlavors {
      for (int i = 0 ; i < channelArray.size(); i++) {
          def channel = channelArray[i]
          "${channel}"{
              manifestPlaceholders = [CHANNEL_VALUE: channel]
          }
      }
  }

  渠道读取
  private String getChannel(Context context) {
      try {
          PackageManager pm = context.getPackageManager();
          ApplicationInfo appInfo = pm.getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
          return appInfo.metaData.getString("channel");
      } catch (PackageManager.NameNotFoundException ignored) {
      }
      return "";
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值