后续尝试都会持续更新和关注:
Atlas、VirtualAPK、RePlugin三者的体验感受 - 插件化对比【暂无Shadow】
https://blog.csdn.net/u013254166/article/details/80431288 - VirtualApk详细过程,对比Atlas、RePlugin
Qihoo360/RePlugin - 考察了现在仍在更新的几个插件化方案与项目切合度做出的决定,主要原因是它仅Hook了一个点、并且支持多进程,参考 https://www.jianshu.com/p/d43e1fb426f3 概念介绍。
参考官方走起:
-主程序(主模块App)接入指南> https://github.com/Qihoo360/RePlugin/wiki/主程序接入指南Gradle等问题> RePlugin 初体验
-官方插件(新建一个Application's module或者单独一个工程)接入指南> https://github.com/Qihoo360/RePlugin/wiki/插件接入指南
-插件创建接入详细教程> https://github.com/Qihoo360/RePlugin/wiki/详细教程
--内置插件方式(可以抢先尝试,简单些) https://github.com/Qihoo360/RePlugin/wiki/插件的管理#内置插件 参考:https://blog.csdn.net/qq_35159110/article/details/81481655
--外置插件方式 https://github.com/Qihoo360/RePlugin/wiki/插件的管理#外置插件 参考: 360插件化方案RePlugin学习笔记-外置插件
--关于被恶意下发的apk侵害还是需要考虑插件安全校验的https://github.com/Qihoo360/RePlugin/wiki/插件的管理#安全与签名校验
- 个人练习地址 NetNut/DocPro - 主模块app和插件Application模块在一个工程,方便测试; 多人协同是否需要多个工程,看情况吧,效率高,方便管理就好!
- (注意:测试发现如果安装过插件,即使你删除了assets下面apk或者jar,下次重新运行还是会加载插件的,应该是有缓存的,具体文档没特别细看!注意就好....)。另外,测试有问题,可能还需你clean一下工程之类的。坑总归还是有的....
- 另外我们一般都是外置插件的方式,需要我们考虑apk的更新(是否是新版本更新,需要校验是否是正确的apk等细节。如果打算采用这个框架,建议相关文档都过一遍,心里有个小底要好些。)
- 界面Theme配置就是常规就行,插件和宿主都是一样.
.......
- 上一篇练习的代理方式的插件,各种问题,好烦呀...(#.#)
- 先这样认识下吧。其他的还需要自己多加练习和看文档妮....到后面的后面的后面的后面还需要你去了解人家的机制源码!!!
Tencent/Shadow - 可以持续关注
didi/VirtualAPK - com.didi.virtualapk:core:0.9.8 (Android 9.0 supported, RePlugin also)
***参考官方走起: ***didi/VirtualAPK
- 官方问题总结,不一定有你需要的答案 https://github.com/didi/VirtualAPK/wiki/常见问题解答
实践工程 NetNut/DocPro - 配置下来,感觉和那个360的Replugin很像,方式都差不多。不过360的库是拆分了插件和宿主分别使用的。而didi都在宿主配置;另外就是使用思路都类似。didi一开始会有坑:
我的主要坑:
1. 插件布局没有一个id,导致打包can't find id的错误
2. gradle版本太高的问题
3.插件编译时buildToolsVersion不支持28+的问题
4. 有时候报Can't delete ...之类的红色错误,记得rebuild一下。如果还是有问题,就关闭AS,然后重启之后可能还需要rebuild一下工程
4.x. 插件的布局文件,界面文件的相关命名不要和宿主相同,不然点击跳转页面,总是发现还是当前宿主的页面,包括后续的空间id,最好都安装标准格式,增加插件前缀名称:
5.注意需要采用如下方式编译插件 - 具体后面再看看
- 注意需要签名打包才行 - 还真是各种麻烦呀!
- 注意不要多次加载插件,不然报错
// 判断plugin是否已经加载
if (null == PluginManager.getInstance(MainActivity.this).getLoadedPlugin("com.skl.virtualapkpluginapk")) {
PluginManager.getInstance(MainActivity.this).loadPlugin(new File(apkPath));
}
- 有些错误如果没有人遇到,可以网上搜下,比如gradle版本之类的问题,可以针对性的调试,或者坑就没了
- 附上几个相关的坑的记录链接,有需要的或许里面有答案 - 同样,如果打算采用,就要基本上通读一下,避免后续遇到的一系列问题可以快点的找到解决入口!
【Android】VirtualAPK的简单使用
插件化之VirtualApk实战一:项目配置
VirtualAPK插件框架接入
VirtualApk demo爬过的坑
didi VirtualApk 框架使用
https://blog.csdn.net/a31081314/article/details/82661009
alibaba/atlas - 动态组件化框架,参考 阿里Atlas淘宝动态组件化框架详细攻略
wequick/Small - 可以学习鸭
待续.....
说明:入门,基础知识,自己尝试,三方插件使用等等。都是为了后续的学习添加一份动力。每个人都有自己的进阶路线,还需努力...一起坚持!