一种 API 兼容性检测方案
摘要
一般来说,SDK依赖库的Api兼容性问题一直是个隐藏的问题,通常没有很好的方式解决,即使使用语义化版本管理,在众多基础SDK的引用依赖下,不能100%保证其中一个基础SDK的Api发生不兼容的改变后,该改变可能是对外暴露方法的签名改变、方法名称改变亦或是类名包名等改变,而发生这些不兼容Api的变化后,不能保证所有依赖该基础SDK的上层SDK全部对应的升级依赖版本。当然,良好的开发模式对于基础SDK开发来讲,对外暴露的Api的改变,一般不能直接改变其方法签名以及包名类名等,而应该相应的标为@Deprecated提供向下兼容。
但是,作为团队多人协作开发模式下,不能100%保证所有基础SDK的开发都以兼容方式进行Api的改变,除此之外,使用到的一些三方开源SDK,这个也不能保证它提供的Api是否是兼容的,以及在进行组件化、插件化过程中,Api兼容性问题是必须要考虑的。
为什么要考虑?这里所说的Api兼容性问题,不是发生在项目编译期,而是在运行期,因为项目中的SDK依赖库依赖进来时,是已经编译好的字节码文件,所以SDK依赖库内的兼容性问题,只有在程序运行期才可出现,一般表现为Crash或无响应,且出现上述情况的前提条件是代码刚好执行到了这段,否则还是不会有任何异常。
欢迎在评论区写下你对这篇文章的看法。


