使用gradle多渠道打包

以友盟的多渠道打包为例,假设我们需要打包出如下渠道:UMENG, WANDOUJIA, YINGYONGBAO。

第一种方法,是需要创建文件的。

我们在写完我们的代码之后,在app/src下面,分别创建和main同级目录的文件夹umeng, wandoujia, yingyongbao,这三个文件夹里面都各只有一个AndroidManifest.xml文件,文件只需要如下:

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     package="your.package.name">  
  3.     <application>  
  4.   
  5.           <meta-data android:name="UMENG_CHANNEL" android:value="UMENG"/>  
  6.   
  7.     </application>  
  8. </manifest>  
注意,上面的value的值要和你的渠道名所对应。比如wandoujia里面要对应为你豌豆荚上的渠道名(如WANDOUJAI)。

然后在你的build.gradle的android{}节点里面,添加productFlavors节点,代码如下:

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. android {  
  2.     // 这里是你的其他配置  
  3.   
  4.     productFlavors{  
  5.         umeng{  }  
  6.         wandoujai {  }  
  7.         yingyongbao{  }  
  8.     }  
  9.     // 你的其他配置  
  10. }  
注意这里的flavors的名字要和你的文件夹的名字对应。这样配置之后,构建的就是多渠道的APK了。


第二种方法,不用创建那些文件,它使用的是Gradle Android插件里的另一个功能,manifestPlaceholders。

在这种方法中,你只需要在AndroidManifest.xml中,对友盟的渠道进行这样配置:

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <meta-data  
  2.     android:name="UMENG_CHANNEL"  
  3.     android:value="${CHANNEL_NAME}" />  

然后同样使用productFlavors,不过这时它的配置是这样的:

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. android {  
  2.     // 你的其他配置代码  
  3.   
  4.     productFlavors {  
  5.         yingyongbao {  
  6.             manifestPlaceholders = [ CHANNEL_NAME:"YINGYONGBAO"]  
  7.         }  
  8.         umeng {  
  9.             manifestPlaceholders = [ CHANNEL_NAME:"UMENG" ]  
  10.         }  
  11.         wandoujia {  
  12.             manifestPlaceholders = [ CHANNEL_NAME:"WANDOUJIA" ]  
  13.         }  
  14.   
  15.     }  
  16.     // 你的其他配置代码  
  17. }  

在上面当中,我们也可以指定一个默认的渠道名,如果需要的话。指定默认的值是在defaultConfig节点当中添加如下内容:

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. manifestPlaceholders = [ CHANNEL_NAME:"Unspecified"]  
这里的Unspecified换成你实际上的默认的渠道名。

使用manifestPlaceholders的这种配置,同样适用于manifest的其他配置。比如你需要在不同渠道发布的apk里面,指定不同的启动Activity。比如在豌豆荚里面发布的,启动的Activity显示的是豌豆荚首发的界面,应用宝里面启动的是应用宝首发的界面(哈哈,有点坏),你就可以对你的activity的值使用${activity_name}的方式,然后在productFlavors里面配置这个${activity_name}的值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值