项目中用到的gradle分sdk的实例

1、 场景

项目里有一个功能,集成了第三方的sdk,项目很小,所以相关sdk及代码没有抽离成module。这个功能找了两个供应商,两个厂商的sdk不兼容,所以需要对不同供应商的设备分别打包。决定使用gradle对项目代码和sdk进行分flavor打包。

2、 首先对lib分flavor

修改gradle.build中的flavor配置。项目本身有一个环境维度的flovar "env",对应测试环境flavor "xxTest"和“xx”,现在需要添加多一个维度"sdk",对应两家供应商"one","two"。由于考虑到代码里面会有根据厂商不同做一些选择处理的逻辑,所以在里面又增加了"SDK"常量定义。

apply plugin: 'com.android.application'

android {

flavorDimensions "env","sdk"

productFlavors {

subwayTest {

buildConfigField "String","SERVER_IP","/"a.com/""

buildConfigField "String","COMMON_SERVER_PORT","/"8080""

dimension "env"

}

subway {

buildConfigField "String","SERVER_IP","/"b.com/""

buildConfigField "String","COMMON_SERVER_PORT","/"8080""

dimension "env"

}

one {

buildConfigField "String", "SDK","/"one/""

dimension "sdk"

}

two {

buildConfigField "String", "SDK","/"two/""

dimension "sdk"

}

}

...

}

修改依赖中lib的写法。第三方sdk有许多 so文件,也有jar,
我这里简单粗暴的把lib整个复制成两份,把其中对应的不同的jar包换掉,
这样配gradle就不用一个文件一个文件写了。我也试过把libs里面放so,
只把jar分开,但是跑不起来,所以就把so文件都copy了。
以后可以再研究一下。

repositories {

flatDir {

dirs 'libs'

}

}

sourceSets.main.jniLibs.srcDirs = ['libs']


dependencies {

oneImplementation fileTree(include: ['*.jar'], dir: 'onelibs')

twoImplementation fileTree(include: ['*.jar'], dir: 'twolibs')

// implementation fileTree(include: ['*.jar'], dir: 'libs')

...

}


修改文件目录

前:

项目中用到的gradle分sdk的实例

后:

项目中用到的gradle分sdk的实例

3、 对代码部分分包

添加flavor文件夹与main平级,如下。

项目中用到的gradle分sdk的实例

把有区别的代码按原来的包结构拷到对应两个flavor下面,main下面就不要再留同样的文件。AndroidManifest.xml也拷进去,可以分别进行配置。如果资源文件也有区别,可以在/java平级建。

项目中用到的gradle分sdk的实例

为了防止入口activity创建多个实例,需要修改各个flavor里面的AndroidManifest.xml,把入口activity标签里多加一个属性

tools:node="replace"

原文链接:https://my.oschina.net/u/268088/blog/4317407

关注我获取更多知识或者投稿

项目中用到的gradle分sdk的实例

项目中用到的gradle分sdk的实例

原文 

http://mp.weixin.qq.com/s?__biz=MzA3NzMxODEyMQ==&mid=2666456133&idx=1&sn=a4efee026fb00846267dac38016f5b51

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 项目中用到的gradle分sdk的实例

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址