因业务需求,我们会遇到需要开发SDK提供给外部使用,有可能是公司内部其他部分或者是对外的SDK。一般有两种方式:aar和maven。
例如module C 为SDK核心代码,为了隔离module C对外接口,方便混淆,module B 通过api方式依赖module C 的maven,相当于包一层壳,只需要对外提供module B 的maven即可。
module C需要对libs目录下的jar和xxx.aar引用进行处理。
1、module C 引用jar可以通过implementation方式,会和module C一起打包进maven 生成的aar中。
2、module C 引用xxx.aar则可通过compileOnly方式引用,确保编译不出错。如果xxx.aar也通过implementation方式引用,虽然上传到maven不会出错,但module C被依赖时,则会出现问题,因为implementation方式引用xxx.aar是不会被打包进maven生成的aar。
完成上述操作后,module B 通过 api 的方式依赖 module C对应的maven。
最后将module B 生成的maven 和module C 中的xxx.aar一并提供给接入方。接入方可以在libs目录下添加xxx.aar,然后通过implementation方式引用xxx.aar。