对于业务复杂繁多,且经常变化修改的系统,必然会有很多模块,而且各个模块属于不同小组开发,插件式开发是一个很好的架构。
其核心思想就是反射,涉及两个重点的类型
PathClassLoader :加载已经安装到Android系统中的Apk的 class 字节码文件,是Android默认使用的类加载器;
DexClassLoader :加载制定目录的dex/jar/apk/zip文件;初始化可用this.dexClassLoader = new DexClassLoader(apkPath, apkDexPath, null, this.getClassLoader());
// 通过反射机制调用相关的类
Class mLoadClass = classLoader.loadClass("com.example.apkdemo.HelloApkActivity");
Constructor constructor = mLoadClass.getConstructor(new Class[] {});
Object testActivity = constructor.newInstance(new Object[] {});