Android开发经验谈Android知识Android开发

接入sdk库的几点心得体会

2018-11-07  本文已影响17人  JarryWell

由于项目的特殊性,最近一直在往app工程里接入(更新)第三方sdk,并且app的一些基础控件也被其他项目组封装成了sdk来导入。在不停的sdk更新迭代过程中碰到了一些问题,记录一下为后续排查问题依据。

//3.0.1
public static Context build(Activity activity, boolean param1, boolean param2) {
    //...
}

然后是app依赖的库A高版本(3.0.3)的接口:

//3.0.3
public static Context build(Context context, boolean param1, boolean param2) {
    //...
}

3.0.1版本与3.0.3版本的差异只是build()函数的第一个参数Activity变为了Context,但app升级了库A3.0.3版本后编译能通过,sdk内部却必现抛找不到方法异常:

java.lang.NoSuchMethodError: No static method build(Landroid/app/Activity;ZZ)Landroid/content/Context;

且我测试在app里调用这个build()方法又是正常的。为什么呢?原因就是上面说的(删掉了方法与修改了方法签名本质上是一样的),即使这里满足多态性(ContextActivity的基类)也不行。

查看app的依赖关系的命令:

./gradlew :app:dependencies
上一篇下一篇

猜你喜欢

热点阅读