开发过程中经常会遇到应用中用到一些三方库。但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应尽量避免再依赖三方库。这样就不会有版本冲突,遇到问题也可以随时修改,毕竟自己的代码自己可掌控。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐