美文网首页
Android实现一套代码打包差异化多版本

Android实现一套代码打包差异化多版本

作者: 简单点的笨演员 | 来源:发表于2020-10-13 16:57 被阅读0次

实际项目开发过程中,经常会遇到这样的场景:一个项目要根据需要打包成多个存在差异的版本,比如对外版本、对内版本,或者开发版本、测试版本、线上版本等等……并且几个版本的代码是相同,有几个是不同的,那么如何通过维护一套代码的前提下实现打包差异化多版本呢?可以使用productFlavors来实现这样的需求。

1、首先,在build.gradle里添加productFlavors:

android {
    ...
    flavorDimensions "product"
    productFlavors {
        flavorOne {
            applicationId "com.test.app.huawei"
            // ...
        }
        flavorTwo {
            applicationId "com.test.app.360"
            // ...
        }
        flavorThree {
            // ...
        }
        flavorFour {
            // ...
        }
    }
}

2、接着,在src目录,根据main目录的结构,新建需要代码差异化的与productFlavors里定义相同名字的文件夹,如flavorOne、flavorTwo。编译时gradle会将main目录自动合并,这样一来,版本flavorOne的代码实质是由flavorOne目录+main目录的代码组成,如果两个目录中有相同的类会报错。

3、最后,在build.gradle里添加下面的代码,让flavorFour和flavorThree使用flavorOne的代码。

android {
    ...
    sourceSets {
        flavorFour.java.srcDir 'src/flavorOne/java'
        flavorThree.java.srcDir 'src/flavorOne/java'
    }
}

参考:
https://blog.51cto.com/alany/1827538
https://stackoverflow.com/questions/28563632/common-code-for-different-android-flavors/30548238#30548238
https://segmentfault.com/q/1010000010333922

相关文章

网友评论

      本文标题:Android实现一套代码打包差异化多版本

      本文链接:https://www.haomeiwen.com/subject/ngmvpktx.html