开发过程中经常会遇到应用中用到一些三方库。但SDK也用到该三方库。如果版本不一致,就会造成冲突并编译报错。从主应用和SDK的角度,一般有如下三种解决办法:
方案一,采用exclude方式剔除SDK中的冲突三方库。
例如应用中使用了Gson,SDK也引入了Gson。在build.gradle中引用SDK时,配置如下,则可以将SDK中的Gson剔除,不将它打包到apk。
implementation (‘xxx.xxx.sdk’){ exclude group: ‘com.google.code.gson’}
方案二,开发SDK时将用到的三方库以源码的方式引入,并修改包名。
这样既完成了功能,又因为包名不一样不会有冲突。不过如果该三方库特别大的时候记得精简代码,只引入SDK需要的部分功能代码,以减小SDK包体积。
以gson库为例,大部分的安卓应用都会用到。当SDK也需要用到gson时如果gson版本不一致就会造成冲突,编译报错。此时我们就需要将gson的功能代码以源码的方式引入到工程,并且修改包名。这样我们的Gson与与业务方的Gson就是两个东西了,不会有冲突。
方案三,开发SDK时不依赖三方库,自己去实现该三方库的功能:
如果只用到三方库的少部分功能,并且我们自己完全有精力去实现这个功能。就可以避免对三方库的依赖,从而避免冲突。
总结:开发SDK应尽量避免再依赖三方库。这样就不会有版本冲突,遇到问题也可以随时修改,毕竟自己的代码自己可掌控。