初次涉足 Android ,基础不好请各位见谅。
公司的闭源项目使用到 LGPL 协议的类库,被要求必须 dynamic link 。现在用 DexClassLoader 实现遇到几个问题:
1.由于是类库不是自己打包的 jar 文件,没有 interface ,要调用似乎只能用反射,类似
Class clazz = null;
Method method = clazz.getDeclaredMethod("func");
T result = (T) method.invoke(clazz.newInstance());
但是这里我需要用到的类并不适用空的构造方法, newInstance()该如何调用自定义的构造方法呢?
2.被调用的方法会抛出一打异常,要分类处理。多数 Exception 的类型同样是在这个库里定义的,通常程序里是
import xxx.CustomException;
try {
……
} catch (CustomException e) {
……
}
但这里 CustomException 同样在动态加载的类库里故而不能用 import ,目前我的想法是一概 catch Exception ,再用(1)的方法拿到 CustomException 的 Class 做比对。请教这种情况有无规范或普遍的做法?
如果有相关的学习资料也希望得到共享,谢谢。