一.先上链接
http://blog.csdn.net/tiankong1206/article/details/50444232
对productFlavors的各种用法介绍的蛮详细
http://blog.csdn.net/angusing/article/details/47721765
对productFlavors这些是干啥用的还不清楚的可以看看这个
http://blog.csdn.net/tiankong1206/article/details/50436007
http://www.jianshu.com/p/81eff804d1b8
这两个都是介绍利用productFlavors替换baseurl的
http://www.cnblogs.com/qianxudetianxia/p/4948499.html
http://www.csdn.net/article/2015-08-10/2825420/2
这两个介绍的各种用法比较偏
http://tech.meituan.com/mt-apk-adaptation.html
这是美团的渠道管理适配的一些例子,相当有用
二.理解图示
这个图示不看也罢...
三.上代码
1.替换不同版本的资源
a.创建统一文件夹
首先创建需要的版本
//设置不同的版本
productFlavors {
//debug版本,调试用
db {
}
}
在src下main的同级目录创建版本文件夹,此处注意:文件夹名字就是在gradle里定义的版本名字!
接下来就看你想替换什么资源了,例如想要不同版本显示不同应用名称,可以在版本文件夹下创建res/values/string.xml,里面换个不同的名字就可以.想要更换不同的图片,例如想要每个版本有各自的icon,在drawable里复制不同的icon就可以,但必须资源名字一致.
原理:在productFlavors多版本的情况下,编译打包会首先检查你想要编译的版本下的资源文件,如果没有才会使用main目录下的.
另外,我也尝试过复制java文件到各版本的文件夹下,但是没有效果.根据上面的链接里介绍说,编译时是先查看main下的java文件再查看版本下的Java文件.下次再实验下...
b.替换mainfest字段
如果仅仅想要改变版本应用名称,这里有种更简单的方法.本方法适用于更改mainfest里的一切字段,多渠道打包的原理也是这个.
原理:在mainfest里按照一定格式自定义个可变的字段,在gradle里根据不同版本赋予不同的值.
注意:自定义mainfest字段的格式为:${YOUR_NAME};例如${APP_NAME}
2.替换已有的字段
gradle在编译之后会生成一个buildConfirg的配置文件,它默认给我们定义了一些字段,例如;
applicationId,versionCode,versionName这些
所以我们可以直接在我们的gradle版本里根据不同版本设置不同的应用标识和版本号这些
3.替换自定义字段
gradle默认的字段毕竟只有几个,有时我们会想要自定义个字段.以下以多版本不同url为例:
按照图中格式,APP_URL是字段名,可以随意,后面是不同版本对应的根url
在代码中引用就可以了
另外,链接中也有通过创建文件夹这种方法实现不同根url的.
4.选择版本
差点忘了,在平时调试时如何选择想要的版本:
最后,up新手,写的疏漏,忘多包涵.因为用的不是很深,所以暂时就了解到这了.推荐大家有空的话找找gradle的官方文档来读!