之前在项目中发现一个bug,是由于引用的一个第三方库google gms中要求的最低版本高于app的最低版本,但是又想使用高版本库的特点。
导致不支持的版本出现崩溃,排查发现可以通过修改库中版本判断的方法来解决问题。
在网上找了一些实现方式,发现配置方式复杂,难以理解。于是决定参考其实现原理自己写一套。
原理
在 gradle编译android项目时,注册自定义 Transform,Transform中可以获取所有输入的jar信息
扫描到需要修复的class后,通过javaasist修改有问题的代码
项目地址:github