Android多渠道编译-依赖的渠道控制

版权声明:本文为博主原创文章,如需转载请标明出处:http://blog.csdn.net/qiaomu8559968 https://blog.csdn.net/qiaomu8559968/article/details/74110563

最近在开发一款android的SDK,其中有一个需求很有意思,需要在不同版本的SDK上引用不同Library依赖。之前还真没有遇到过,查阅了很多资料搞定了,在这里记录下来,分享给大家。~~

不同渠道依赖不同的第三方库

在build.gradle配置文件中的Android{}中添加如下类似多渠道配置

    productFlavors {
        flavor1 {}
        flavor2 {}
    }

如上我们已经定义了flavor1和flavor2两个渠道版本。如果我们想在flavor1中使用Gson,而flavor2中不使用,我们可以使用如下方式

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:25.3.1'
    flavor1Compile 'com.google.code.gson:gson:2.2.4'
    flavor1Compile 'com.android.support.constraint:constraint-layout:1.0.2'
    flavor2Compile 'com.android.support.constraint:constraint-layout:1.0.2'
}

引用方式是在我们平时引用依赖的compile关键字前面加上渠道名并将compile首字母大写。
注意:执行编译使出现如下错误的话,请将dependencies配置放到gradle配置文件的最底端。

Error:(6, 0) Gradle DSL method not found: ‘flavor1Compile()’

好了,通过以上的配置我们就能够打出一个依赖的Gson一个没有依赖Gson的APK了,我们可以去验证一下。

这里写图片描述
在AndroidStudio中双击debug的apk文件可以预览它。如下:
这里写图片描述
点击classes.dex查看代码结构,如下:
这里写图片描述
我们可以看到Gson的class已经编译到了dex文件中。再来看一下flavor2的classes.dex文件:
这里写图片描述
并没有Gson的class文件,说明我们成功的在两个渠道版本中实现了依赖的不同。

除了第三方的依赖,Library工程也可以使用相同的方法。

flavor1Compile project(':XXXLibrary')
阅读更多
换一批

没有更多推荐了,返回首页