1.共享宿主
讲宿主需要的文件提取出来编译成库,骗过编译期。主要看demo1中的build.gradle有相关说明。 骗过编译期。
2.插件文件64K(multidex)了怎么破?需要对插件进行编译拆包。com.ceabie.dextools:gradle-dexknife-plugin:1.6.1分包的问题,打包后虽然有主classes有找到com.qihoo360.replugin.Entry但还是报错,自己手动添加maindexlist.txt在里面添加com.qihoo360.replugin打包进去就好了,具体操作请参考,感谢博主
3.context异常,当前是的上下文是谁的,这个要明确。宿主or插件。
4.android 8.0 异常代码RePlugin.getConfig().getCallbacks().createPluginClassLoader(mPluginObj.mInfo, mPath, out, soDir, parent);不会再out目录下面生成.dex文件
5.插件相关权限要提前在宿主中注册。
6.demo里面的host运行抱错,可先注释掉,可直接运行。
private void testThreadClassLoader() {
// 在2.1.7及以前版本,如果直接调用此方法,则拿到的ClassLoader可能是PathClassLoader或者为空。有极个别Java库会用到此方法
// 这里务必确保:cl == getClassLoader(),才符合预期
// ClassLoader cl = Thread.currentThread().getContextClassLoader();
// if (cl != getClassLoader()) {
// throw new RuntimeException("Thread.current.classLoader != getClassLoader(). cl=" + cl + "; getC=" + getClassLoader());
// }
}
7.intent传serializable对象失败。
检测是否serializable对象里面是否有id,建议用Parcelable来传值。
8.源码与字节码不匹配,清除gradle repo缓存后就ok了。
9.支持混淆,务必要确保你调用的,以Provided形式的Jar是被Keep住的。
10.LocalBoradcastManager和PluginLocalBroadcastManager 是平行关系,非继承!
11.插件中的Activity嵌套Fragment崩溃,记得Fragment不被混淆,声明为Public的,而且得有一个Public的构造函数。如果遇到xml中fragment问题,可先new再add进去。
12.启动抱错,忘记加repluginPluginConfig 在插件中
repluginPluginConfig {
//宿主app的包名
pluginName = "插件名.demo1"
//宿主app的包名
hostApplicationId = "宿主.参见demo"
//宿主app的启动activity
hostAppLauncherActivity = "插件.参见demo"
}
13.插件可以复用主程序的资源,可以的,因为会同时把host和plugin的Context传递给插件.
14.插件里面WebView读取asserts的ERR_FILE_NOT_FOUND参见issue
15.插件中引用AAR中的activity,会出现白屏.参见issue
16.Didn’t find class “com.qihoo360.replugin.Entry”.检查是否缺少相关依赖
compile 'com.qihoo360.replugin:replugin-plugin-lib:2.1.6' 库
17.大部分Context导致的问题,要明白是宿主的Context还是插件的Context。我们当前是在哪里使用的Context。使用宿主资源建议用getIdentifier,最好还不要资源混淆宿主源文件。
18.插件app好像不兼容百度地图,因为Windows环境下编译时,大小写不区分导致的问题(实际上也是百度地图Jar包生成时出现了问题,明明是a,但文件名变成了A)
19.嵌套插件,原理上行得通。但是最好不要加固!
20.无法启动demo第3个PluginFragmentActivity。
setUseHostClassIfNotFound(true)方法?没有调用的话就会出这个Error,因为只有打开此开关后才会从宿主中读取Fragment等公共库
21.加固问题。宿主加固没问题,插件加固目前是不可以的
22.阿里路由框架问题,可去次库寻找答案
23.后续会持续收集各种问题。
1)RePlugin主程序接入指南
2)RePlugin的FAQ