一套代码打包多个项目这一篇就够了

最近在做项目制的开发,有一套开发好的产品原型的代码,然后根据不同的客户进行不同的定制开发。如果一个项目搞一个分支,要多开多个as,还有一个缺点就是如果产品原型的代码进行了变更和优化,所有的项目分支都要将产品修改后果的代码复制转移一次,麻烦!

build.gradle可以帮我们解决这个问题。

一.先来讲重点,配置变种:

1.在android { } 中增加如下代码,适用于as建立的项目,eclipse转换过来的项目需要增加sourceSets {}

    // 维度组合,productFlavors中不同种类的dimension可以组合,名字根据实际需要自己取
    flavorDimensions "mode", "channel"
    productFlavors {
        trunk {
            // 维度小组名称
            dimension "mode"
            // 修改项目包名,在清单文件中的包名后增加后缀;
            // 也可以使用applicationId "com.xx.xx" 替换掉默认的包名
            applicationIdSuffix ".trunk"
            // 编译后会自动生成在BuildConfig.java中,代码中通过使用BuildConfig.IPADRESS获取后面的值
            // 参数规则“String”表示参数类型,也可以是boolean等,"IPADRESS"是常量名称,最后一个是内容
            buildConfigField "String", "IPADRESS", "\"192.168.x.xx:8080\""
            // 还可以增加各种不同的配置,defaultConfig中配置这里都可以用,重复的配置这里的会覆盖掉defaultConfig
        }
        guiyang {
            dimension "mode"
            applicationIdSuffix ".guiyang"
            buildConfigField "String", "IPADRESS", "\"192.168.x.xx:8082\""
        }
        huawei{
            dimension "channel"
            // 给清单文件中的渠道占位符赋值
            manifestPlaceholders = [CHANNEL_VALUE:"huawei"]
        }
        xiaomi{
            dimension "channel"
            manifestPlaceholders = [CHANNEL_VALUE:"xiaomi"]
        }

2.在工程目录中新增如下目录

如果productFlavors中没有main:main为默认目录,每个组合都会含有main中的代码;

如果productFlavors中有main:main也相当于一个风味,不会和trunk合并(根据实际需要,trunk既可以是main的扩展也可以和main平级,完全看自己怎么配置)

trunk和guiyang(注意:文件夹名称要和productFlavors中的名字对应)中放各个定制项目中的差异代码,其下的目录结构文件非必须,如果需要修改main中的资源或新增代码,就在各自项目中增加对应的文件夹和文件,如果没有修改可以只有个主目录

trunk/guiyang和main中的文件合并规则如下:

图片、音频、 XML 类型的 Drawable ,layout等资源文件,将会进行文件级的覆盖
字符串、颜色值、整型等资源以及 AndroidManifest.xml ,将会进行元素级的覆盖
代码资源,同一个类, buildTypes 、 productFlavors 、 main 中只能存在一次,否则会有类重复的错误
覆盖等级为:buildTypes > productFlavors > main

3.配置后在as左下角Build Variants中可以看到如下组合,维度组合2*2,每个组合再分debu

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值