安卓productFlavors多渠道多版本管理

一.先上链接

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
这是美团的渠道管理适配的一些例子,相当有用

二.理解图示

这个图示不看也罢...
安卓productFlavors多渠道多版本管理_第1张图片
理解图示.png

三.上代码

1.替换不同版本的资源

a.创建统一文件夹

首先创建需要的版本

 //设置不同的版本
    productFlavors {
        //debug版本,调试用
        db {

        }
    }

在src下main的同级目录创建版本文件夹,此处注意:文件夹名字就是在gradle里定义的版本名字!


安卓productFlavors多渠道多版本管理_第2张图片
创建同级文件夹L.png

接下来就看你想替换什么资源了,例如想要不同版本显示不同应用名称,可以在版本文件夹下创建res/values/string.xml,里面换个不同的名字就可以.想要更换不同的图片,例如想要每个版本有各自的icon,在drawable里复制不同的icon就可以,但必须资源名字一致.
原理:在productFlavors多版本的情况下,编译打包会首先检查你想要编译的版本下的资源文件,如果没有才会使用main目录下的.
另外,我也尝试过复制java文件到各版本的文件夹下,但是没有效果.根据上面的链接里介绍说,编译时是先查看main下的java文件再查看版本下的Java文件.下次再实验下...

b.替换mainfest字段

如果仅仅想要改变版本应用名称,这里有种更简单的方法.本方法适用于更改mainfest里的一切字段,多渠道打包的原理也是这个.
原理:在mainfest里按照一定格式自定义个可变的字段,在gradle里根据不同版本赋予不同的值.
注意:自定义mainfest字段的格式为:${YOUR_NAME};例如${APP_NAME}

自定义mainfest字段.png
安卓productFlavors多渠道多版本管理_第3张图片
引用mainfest字段.png

2.替换已有的字段

gradle在编译之后会生成一个buildConfirg的配置文件,它默认给我们定义了一些字段,例如;
applicationId,versionCode,versionName这些

安卓productFlavors多渠道多版本管理_第4张图片
使用已有gradle字段.png

所以我们可以直接在我们的gradle版本里根据不同版本设置不同的应用标识和版本号这些

3.替换自定义字段

gradle默认的字段毕竟只有几个,有时我们会想要自定义个字段.以下以多版本不同url为例:
按照图中格式,APP_URL是字段名,可以随意,后面是不同版本对应的根url


安卓productFlavors多渠道多版本管理_第5张图片
自定义gradle字段.png

在代码中引用就可以了

代码引用url.png

另外,链接中也有通过创建文件夹这种方法实现不同根url的.

4.选择版本

差点忘了,在平时调试时如何选择想要的版本:

安卓productFlavors多渠道多版本管理_第6张图片
选择版本.png

最后,up新手,写的疏漏,忘多包涵.因为用的不是很深,所以暂时就了解到这了.推荐大家有空的话找找gradle的官方文档来读!

你可能感兴趣的:(安卓productFlavors多渠道多版本管理)