最近项目需求,需要将公司里面多个APP都融合在一起,所以来试试360插件框架,

先贴源码和wiki连接 https://github.com/Qihoo360/RePlugin/blob/dev/README_CN.md

按照wiki上面的接入说明,很快,自己编写的Demo就能能运行了。想着也挺简单的。

于是开始接入项目,问题接踵而至!

1.如何适配Androidx

官网给的接入版本如下

classpath 'com.qihoo360.replugin:replugin-host-gradle:2.2.4'compile 'com.qihoo360.replugin:replugin-host-lib:2.2.4'classpath 'com.qihoo360.replugin:replugin-plugin-gradle:2.2.4'compile 'com.qihoo360.replugin:replugin-plugin-lib:2.2.4'

只能支持 AndroidGradle 插件版本 2.3.3 的,根本没法达到 Androidx 需要的 AndroidGradle 插件版本 3.2.0 的最低要求。

好在源码下载下来后看到,Relpugin 的版本已经更新至 2.3.4 了,尝试了更新版本,然后将 AndroidGradle 插件版本升级 3.5.3

妥了,可以编译,可以运行了,开心。

刚点开项目,报错了

     Caused by: java.lang.IllegalStateException: This app has been built with an incorrect configuration. Please configure your build for VectorDrawableCompat.

百度一波, 都是让我把 AndroidGradle 插件版本升级到 2.0 以上,可是我的已经是 3.5.3 了,不明觉厉,还有说在 build.gradle 中加入

defaultConfig {vectorDrawables.useSupportLibrary = true...}

不好使,没办法,降低 AndroidGradle 插件版本到 3.2.0 满足 Androidx 最低要求。编起来,等待中,报错,接下来第二个问题。

2.插件项目需要支持Java8

AndroidGradle 插件版本到降到 3.2.0 后,编译报错如下:

error processing F:\plugin_space\Plugin2\app\build\intermediates\transforms\___ReClass___\debug\7.jar
java.lang.RuntimeExceptionat org.objectweb.asm.ClassVisitor.visitModule(ClassVisitor.java:148)at org.objectweb.asm.ClassReader.readModule(ClassReader.java:731)at org.objectweb.asm.ClassReader.accept(ClassReader.java:632)at org.objectweb.asm.ClassReader.accept(ClassReader.java:500)at com.android.builder.desugaring.DesugaringClassAnalyzer.analyze(DesugaringClassAnalyzer.java:144)at com.android.builder.desugaring.DesugaringClassAnalyzer.analyzeJar(DesugaringClassAnalyzer.java:92)at com.android.builder.desugaring.DesugaringClassAnalyzer.analyze(DesugaringClassAnalyzer.java:63)at com.android.build.gradle.internal.transforms.DesugarIncrementalTransformHelper.lambda$getInitalGraphData$4(DesugarIncrementalTransformHelper.java:150)at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

莫名其妙的错,感觉不妙,像是在打包 jar 时候的错,进入知识盲区,百度也不好使了,正在慌乱之际,灵光一现,AndroidGradle 插件版本 3.5.3 的时候编译通过了,只是运行有问题,那我找个中间版本的试试,于是将 AndroidGradle 插件版本改为 3.4.0

classpath 'com.android.tools.build:gradle:3.4.0'

编译......,通过了,开心,放到宿主,安装运行....跑起来了,开心坏了。

接下来就是一些代码上调试的问题,比如

Q: 插件注册的静态广播在插件未启动的时候无法接收

A:发送广播之前调用下面代码,将插件Manifest先解析出来,静态广播就能收到了

RePlugin.fetchComponentList(P_Constants.ALIAS_PLUGIN_1);

Q:插件如何打断点,如何调试

A:在插件代码端的Studio,点击调试按钮,弹出的对话框中选择 show all processes,找到自己的进程打上断点。

Q:插件里面获取Context的方式

A:在插件中,PluginApplication.getContext(),getApplicationContext(),RePlugin.getPluginContext(),getApplication(),RePlugin.getHostContext() 都有所不一样

以下是对应的对象地址,所以在插件中如果要使用 Context,需要注意使用的对象。

2020-08-06 16:26:57.637 14270-14270/com.optima.ww_host D/WMA-WMA-PLUGIN: PluginApplication.getContext() =       com.optima.ww_plugin.PluginApplication@d6c4fad
2020-08-06 16:26:57.637 14270-14270/com.optima.ww_host D/WMA-WMA-PLUGIN: getApplicationContext() =                     com.optima.ww_plugin.PluginApplication@d6c4fad
2020-08-06 16:26:57.637 14270-14270/com.optima.ww_host D/WMA-WMA-PLUGIN: RePlugin.getPluginContext() =            com.qihoo360.loader2.PluginContext@21b3291
2020-08-06 16:26:57.637 14270-14270/com.optima.ww_host D/WMA-WMA-PLUGIN: getApplication() =                                    com.optima.ww_host.MainApplication@1709404
2020-08-06 16:26:57.637 14270-14270/com.optima.ww_host D/WMA-WMA-PLUGIN: RePlugin.getHostContext() =                com.optima.ww_host.MainApplication@1709404

接下来上传我的 Demo 地址吧

宿主:https://github.com/IamMusicBoom/Host

插件1:https://github.com/IamMusicBoom/Plugin1

插件2:https://github.com/IamMusicBoom/Plugin2

依赖包,封装库:https://github.com/IamMusicBoom/RePluginLib

360 Replugin 插件化 支持 Androidx和Java8相关推荐

  1. 360 RePlugin插件化-项目接入

    RePlugin是一套完整的.稳定的.适合全面使用的,占坑类插件化方案,由360手机卫士的RePlugin Team研发,也是业内首个提出"全面插件化"(全面特性.全面兼容.全面使 ...

  2. 360手机卫士插件化RePlugin今日开源,官方全面解读

    作者:张炅轩,360手机卫士·客户端技术专家 写在前面 "RePlugin将在6月底开源,这将是我们献给安卓世界最好的礼物."当我们宣布这一消息时,心中的激动,无以言表.是的,三年 ...

  3. 360 java插件设置_360插件化方案RePlugin初体验

    前天跟朋友聊天提到他们要做个跟360插件化方案类似的框架,领导让他们先了解一下360的实现思路,我也就跟着尝试了一下. RePlugin 是一套完整的.稳定的.适合全面使用的,占坑类插件化方案,由36 ...

  4. RePlugin 插件化方案学习

    RePlugin 插件化方案 RePlugin是一套完整的.稳定的.适合全面使用的,占坑类插件化方案,由360手机卫士的RePlugin Team研发,也是业内首个提出"全面插件化" ...

  5. Android APP热更新中的插件化(Hook技术:反射或动态代理),Demo (2)

    修改AAPT,资源分区,用于Android插件化- https://github.com/BaoBaoJianqiang/AAPT -- Android下的挂钩(hook)和代码注入(inject) ...

  6. activity 转场动画不生效_replugin插件化,插件转场动画失效的问题解决

    说明 随着应用功能的丰富,Android程序的安装包也逐渐变大,这成为应用程序现有框架下难以摆脱的瓶颈.所以引入了rePlugin插件化框架,将应用按功能拆分为插件,以此减小apk的大小并同时增加应用 ...

  7. TinyFrame升级之八:实现简易插件化开发

    本章主要讲解如何为框架新增插件化开发功能. 在.net 4.0中,我们可以在Application开始之前,通过PreApplicationStartMethod方法加载所需要的任何东西.那么今天我们 ...

  8. Android 插件化原理学习 —— Hook 机制之动态代理

    前言 为了实现 App 的快速迭代更新,基于 H5 Hybrid 的解决方案有很多,由于 webview 本身的性能问题,也随之出现了很多基于 JS 引擎实现的原生渲染的方案,例如 React Nat ...

  9. 滴滴开源Android插件化框架VirtualAPK原理分析

    概述 滴滴出行公司的首个对外开源项目 - VirtualAPK.地址:github.com/didi/Virtua- 滴滴自行研发了这款插件化框架,功能全面.兼容性好,还能够适用于有耦合的业务插件,这 ...

  10. Android 插件化原理 完胜360插件框架 技术实战

    性能优化 Android 性能优化 (一)APK高效瘦身 http://blog.csdn.net/whb20081815/article/details/70140063 Android 性能优化 ...

最新文章

  1. linux命名管道 c版本 python版本
  2. ROS学习(八):ROS URDF-transmission
  3. 后台开发经典书籍--Redis深度历险:核心原理和应用实践
  4. SCI论文写作中的注意事项
  5. 【dfs】【模拟】【树】I Like Matrix Forever!
  6. vue : 引入、安装 jquery 、bootstrap
  7. 在Microsoft System Center中利用您的现有投资管理VMware--Veeam MP v6.5
  8. PLSQL中文显示乱码(问号)
  9. 【JVM】JVM指令集总结
  10. freebsd mysql删_FreeBSD增加、删除以及管理用户(适用Linux)
  11. 四种电荷分布,点电荷,体电荷,面电荷,线电荷
  12. WCF中DBNull序列化的问题
  13. 万能地图下载器X3版本终止升级维护
  14. 锤子手机(smartisan t1)如何查看mac地址
  15. 新唐M261M262M263系列芯片知识总结归纳(2)
  16. 用python画简单的猴子画法_10种可爱的小猴子简笔画合集,分分钟被萌翻,一看就会画...
  17. 桥本分数c语言,桥本分数式问题的C++算法
  18. ALL_TAB_COLS
  19. ORACLE 全角数字转半角数字
  20. npm run build:具体

热门文章

  1. 头歌java 实训 答案 代码 java入门
  2. Latex常见符号对照表
  3. BZOJ4484: [Jsoi2015]最小表示
  4. 这特么也太好看了----------博客园主题美化
  5. Windows系统下运行hadoop、HBase程序出错Could not locate executablenull\bin\winutils.exe in the Hadoop binaries
  6. 个体工商户营业执照在网上如何年检?
  7. 属于计算机与网络技术在医学中应用的是,计算机网络技术在医学论文写作与投稿中的应用...
  8. sudo: no valid sudoers sources found,quitting
  9. 我的世界Java种子算法_Minecraft:说说“种子”的使用和原理吧
  10. java vad_(转载)静音检测VAD算法