本来计划今天发Android的官方技术文档的翻译——《Gradle插件用户指南》的第五章的,不过由于昨天晚上没译完,还差几段落,所以只好推后了。

今天就说一下使用Gradle进行类似友盟这样的多渠道打包的方法吧。

本文原创,转载请注意在CSDN上的出处:

http://blog.csdn.net/maosidiaoxian/article/details/42000913

目前我掌握的方法有两种,都非常简单,用的都是Gradle Android插件里的productFlavors。

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

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

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

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="your.package.name"><application><meta-data android:name="UMENG_CHANNEL" android:value="UMENG"/></application>
</manifest>

注意,上面的value的值要和你的渠道名所对应。比如wandoujia里面要对应为你豌豆荚上的渠道名(如WANDOUJAI)。

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

android {// 这里是你的其他配置productFlavors{umeng{  }wandoujai {  }yingyongbao{  }}// 你的其他配置
}

注意这里的flavors的名字要和你的文件夹的名字对应。这样配置之后,构建的就是多渠道的APK了。

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

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

        <meta-dataandroid:name="UMENG_CHANNEL"android:value="${CHANNEL_NAME}" />

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

android {// 你的其他配置代码productFlavors {yingyongbao {manifestPlaceholders = [ CHANNEL_NAME:"YINGYONGBAO"]}umeng {manifestPlaceholders = [ CHANNEL_NAME:"UMENG" ]}wandoujia {manifestPlaceholders = [ CHANNEL_NAME:"WANDOUJIA" ]}}// 你的其他配置代码
}

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

        manifestPlaceholders = [ CHANNEL_NAME:"Unspecified"]

这里的Unspecified换成你实际上的默认的渠道名。

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

本文原创,转载请注明CSDN博客上的出处:

http://blog.csdn.net/maosidiaoxian/article/details/42000913

或作者:Geek_Soledad

Gradle实现的两种简单的多渠道打包方法相关推荐

  1. GIT将本地项目上传到Github(两种简单、方便的方法)

    GIT将本地项目上传到Github(两种简单.方便的方法) 一.第一种方法: 首先你需要一个github账号,所有还没有的话先去注册吧! https://github.com/ 我们使用git需要先安 ...

  2. git学习(10):Git的使用--如何将本地项目上传到Github(两种简单、方便的方法)

    将本地项目上传到Github(两种简单.方便的方法) 一.第一种方法: 首先你需要一个github账号,所有还没有的话先去注册吧! https://github.com/ 我们使用git需要先安装gi ...

  3. Ajax提交Form表单的两种简单方式

    在现在的项目开发中,ajax的应用是必不可免的,最为基本的就是利用ajax的异步处理方式来向后台提交数据.关于ajax提交表单我利用到了两种简单的方式. 方法一## 先获取表单里面的数据,再通过aja ...

  4. 视频怎么做成GIF表情包?教你两种简单好用的制作方法

    怎么把视频制作成GIF表情包呢?制作表情包最大的好处是可以让你的聊天更有趣.表情包可以表达更多的情感和语气,让聊天更加生动活泼.相信大家对此都深有体会,每当网络上出现热梗的影视片段,就会有非常多的相关 ...

  5. 简单轻松的将本地项目上传到Github的两种简单方法

    如何将本地项目上传到Github 将本地项目上传到Github(两种简单.方便的方法) 一.第一种方法: 二.第二种方法: Git命令 查看.添加.提交.删除.找回,重置修改文件 查看文件diff 查 ...

  6. EasyJoyStick使用以及两种操作杆 EasyJoyStick的使用方法,简单的不能再简单 Hedgehog Team-》Easy Touch -》Add Easy Touch For C#

    EasyJoyStick使用以及两种操作杆 EasyJoyStick的使用方法,简单的不能再简单 Hedgehog Team->Easy Touch ->Add Easy Touch Fo ...

  7. 上微信怎么同时用计算机,电脑端微信双开,教你两种简单的方法,上手即用!...

    原标题:电脑端微信双开,教你两种简单的方法,上手即用! 微信现在已不单单是社交软件了,如今已成了工作必备软件,每天上班微信电脑端一登,传个文件,发个群通知,实在方便. 但是很多人都不止有一个微信号,电 ...

  8. 电脑端微信双开,教你两种简单的方法,上手即用!

    电脑端微信双开,教你两种简单的方法,上手即用! https://kuaibao.qq.com/s/20181117A0GAZF00?refer=spider 微信现在已不单单是社交软件了,如今已成了工 ...

  9. halcon颜色识别的两种简单方式

    颜色识别的两种简单方式: 1.单通道方式: 原理:通过不同颜色在灰度图中的阈值范围不同来区分颜色(理论上这种方式不推荐,但在一定情况下适用) 材料: halcon代码: dev_close_windo ...

最新文章

  1. java转python
  2. Flutter监听音量实现波形可视化的音频
  3. 制做任意大小的bmp,并在其中写汉字
  4. WinPcap笔记(4):打开适配器并捕获数据包
  5. arm11搭建Linux平台,armlinux软硬件平台搭建.doc
  6. opencv多摄像头配准_CV 两幅图像配准
  7. Camera 驱动 Bringup
  8. java-信息安全(十六)-双向认证
  9. CAN总线协议是什么?CAN总线协议有哪些?
  10. 小程序注册及域名服务器需要准备的资料
  11. 2022-7-22 最新IOS免越狱 无需USB连接 无需硬件常驻 可云控 适应大批量设备
  12. Kmplayer音频设置
  13. 【OFDM】OFDM正交频分复用---入门总结
  14. 京东面经!让你的春招不再迷茫!
  15. zookeeper读取配置文件失败
  16. 创建银行账户,实现存款,取款,转账(正解)
  17. 自制微信机器人:群发消息、自动接收好友
  18. B4i(iOS)应用程序所需的所有功能
  19. 3DMAX曲柄滑块机构动画制作
  20. 数独(sudoku)游戏的程序求解

热门文章

  1. Canonical为所有支持的Ubuntu LTS系统发布了新的Linux内核更新
  2. python 3.9 gil_Python进阶:深入GIL(下篇)
  3. 鸿蒙平板好用吗,能装“APP”的手表?华为鸿蒙手表平板来了!这钱要不要花?...
  4. 抖音小店无货源,现在什么类目市场好做?选对类目店铺早出单
  5. 何时用put,get,post
  6. “向亲戚借30万买房,房价涨了,亲戚来闹怎么办?”
  7. android 投屏 app 三星,[图]为何Windows 10的Android应用投屏功能仅限于三星手机?
  8. 802.1x逃生模式
  9. Java如何判断数组是否相等呢?
  10. 云服务器搭建hadoop环境心得