问题:通过DexClassLoader加载包apk或者zip, 通过getAssets().open("xxx"), 会读取不了文件,需要通过class.getResourceAsStream("/assets/__pasys_remote_banner.jar");
如果非要通过getAssets().open("xxx")读取,是否可以行,答案是肯定的
可以通过反射调用隐藏api:AssetManager.addAssetPath("xxxx/aa.zip");
然后你就可以通过getAssets().open("xxx")这种方式读取assets目录文件了;
注意事项:android 5.0开始,压缩包或者apk必须包含AndroidManifest.xml,否则会添加不成功的。具体问题:https://code.google.com/p/android/issues/detail?id=144076