美文网首页
Android Gradle差异化编译

Android Gradle差异化编译

作者: 云中的醉 | 来源:发表于2019-08-17 10:41 被阅读0次

有更好的文章可以参看:
https://blog.csdn.net/shijianduan1/article/details/83410267
https://blog.csdn.net/qq_31694651/article/details/75201178

遇到的情况

目前一个应用需要为不同的项目适配不同的界面,但是应用的逻辑代码并没有变化

以下为处理方法:

配置产品特性

在app的gradle中配置如下:

// 产品特性,比如版本或者渠道等,可添加多个
flavorDimensions "version"

    android {
        ...
        defaultConfig {...}
        buildTypes {
            debug{...}
            release{...}
        }
        // Specifies one flavor dimension.
        flavorDimensions "version"
        productFlavors {
            demo {
                // Assigns this product flavor to the "version" flavor dimension.
                // This property is optional if you are using only one dimension.
                dimension "version"
                applicationIdSuffix ".demo"
                versionNameSuffix "-demo"
            }
            full {
                dimension "version"
                applicationIdSuffix ".full"
                versionNameSuffix "-full"
            }
        }
    }

创建资源集合

接下来我们在Studio菜单栏中点击Sync Now之后我们就可以在Build Variants中发现如下几个可选编译的产品:

demoDebug
demoRelease
fullDebug
fullRelease

然后我们按照如下顺序为不同的项目建立资源集合

1.打开 Project 窗格,然后从窗格顶部的下拉菜单中选择 Project 视图。
2.转到 MyProject/app/src/。
3.右键点击 res 目录,然后依次选择 New > Folder > Res Folder。
4.从 Target Source Set 旁边的下拉菜单中,选择 debug。
5.点击 Finish。

配置资源集合

我们在app的gradle中配置如下:

sourceSets {
        demo {
            res.srcDirs('src/demo/res')
        }
    }

最后我们只要把差异的文件放在demo中对应的res中即可,比如我们可以在layout中修改使用的控件信息等,这些文件保持与原项目文件同名,在编译时会自动选择,但是如果想要在编译时使用相同名称的java文件,编译时则会提出报错

相关文章

网友评论

      本文标题:Android Gradle差异化编译

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