插件化分为两种项目,1.宿主app(用来安装插件),2.插件app
1.宿主app集成:
(1) project 下 build.gradle 中添加

  repositories {maven {url "https://dl.bintray.com/qihoo360/replugin"}}dependencies {     classpath 'com.qihoo360.replugin:replugin-host-gradle:2.2.4'}

导入了上述依赖库之后,进行同步项目时,遇到了如下问题:

 Gradle sync failed: No signature ofmethod:com.android.build.gradle.internal.scope.VariantScopeImpl.getMergeAssetsTask() is applicable for argument types: () values: []。

这是因为 Google 对 3.2.0 版本之后的 Gradle 构建工具做了一些修改,RePlugin 官方还没有对此用兼容性处理。
解决方法也很简单,把项目根目录的 build.gradle(注意:不是 app/build.gradle)中的 build:gradle版本改为3.1.2

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

(2) app 下 build.gradle 中添加

dependencies {implementation 'com.qihoo360.replugin:replugin-host-lib:2.2.4'}}//  在 android{}  下方加上 (防止加载时还没取applicationId)apply plugin: 'replugin-host-gradle'

(3)创建一个Application 如果你的工程已有 Application 类,则可以将基类切换到 RePluginApplication 即可。

public class MainApplication extends RePluginApplication { }

或者你也可以用“非继承式”接入
public class MainApplication extends Application {

@Override
protected void attachBaseContext(Context base) {super.attachBaseContext(base);RePlugin.App.attachBaseContext(this);....
}@Override
public void onCreate() {super.onCreate();RePlugin.App.onCreate();....
}@Override
public void onLowMemory() {super.onLowMemory();/* Not need to be called if your application's minSdkVersion > = 14 */RePlugin.App.onLowMemory();....
}@Override
public void onTrimMemory(int level) {super.onTrimMemory(level);/* Not need to be called if your application's minSdkVersion > = 14 */RePlugin.App.onTrimMemory(level);....
}@Override
public void onConfigurationChanged(Configuration config) {super.onConfigurationChanged(config);/* Not need to be called if your application's minSdkVersion > = 14 */RePlugin.App.onConfigurationChanged(config);....
}

}
既然声明了 Application,自然还需要在 AndroidManifest 中配置这个 Application。

<applicationandroid:name=".MainApplication"... />

针对“非继承式”的注意点:
所有方法必须在 UI 线程来“同步”调用。切勿放到工作线程,或者通过 post 方法来执行所有方法必须一一对应,例如 RePlugin.App.attachBaseContext() 方法只在 Application.attachBaseContext() 中调用请将 RePlugin.App 的调用方法,放在“仅次于 super.xxx()”方法的后面

2.插件app集成project 下 build.gradle 中 添加

dependencies {classpath 'com.qihoo360.replugin:replugin-plugin-gradle:2.2.4'
}

app下 build.gradle 中添加

dependencies {  implementation 'com.qihoo360.replugin:replugin-plugin-lib:2.2.4'
}
//android {}下方添加
apply plugin: 'replugin-plugin-gradle'

集成完毕.
接下来 --> 安装插件
1.外部插件安装方法

 //插件下载下来的绝对地址
PluginInfo install = RePlugin.install("/storage/sdcard0/apk_包/Module1.apk");
//如果为nill则没有安装成功
Log.i(TAG,install);
//判断是否安装了插件 plugName 别名
if (RePlugin.isPluginInstalled("com.*.module1")) {//"com.*.module1.MainActivity" 为要跳转组件的路径RePlugin.startActivity(this,RePlugin.createIntent("com.business.module1", "com.*.module1.MainActivity"));
}

部插件安装
Androidmanifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.my.myreplugintest2"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"== android:exported="true"==><activity android:name=".MainActivity"android:theme="@style/AppTheme"><intent-filter><action android:name="android.intent.action.MAIN" /><categoryandroid:name="android.intent.category.LAUNCHER" /></intent-filter></activity>== <!-插件名称-><meta-dataandroid:name="com.my.myreplugintest2.name"android:value="plugin1"/><!-插件版本-><meta-dataandroid:name="com.my.myreplugintest2.version.ver"android:value="1"/>==</application></manifest>

设置成暴露exported=“true”,然后设置别名
说明:meta-data下的name是包名+name,包名+version.var
然后打成apk
(内置于 APP 之中,并随 APP 一并发版,需要将插件 apk 改成 .jar 结尾放入主程序的assets/plugins目录。)
7:主程序运行
在主程序中与java文件同级,创建assets/plugins目录,把打好的apk修改名字为 plugin1.jar(plugin1是我的别名)
RePlugin.startActivity(MainActivity.this, RePlugin.createIntent(“plugin1”, “com.my.myreplugintest2.MainActivity”));
plugin1为插件别名。com.my.myreplugintest2.MainActivity是插件文件的位置。

奇虎360 replugin 插件化框架集成相关推荐

  1. 从50亿图文中提取中文跨模态新基准Zero,奇虎360全新预训练框架超越多项SOTA

    ©作者 | 奇虎360人工智能研究院.清华大学 来源 | 机器之心 对于中文社区来说,本文提出的大规模跨模态基准数据集无疑很有价值. 视觉语言预训练(VLP)主要学习视觉与自然语言之间的语义对应关系. ...

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

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

  3. 奇虎360正式开源其深度学习调度平台,支持TensorFlow、MXNet等框架

    奇虎360今日宣布开源深度学习调度平台XLearning,项目开源地址:https://github.com/Qihoo360/XLearning. \\ XLearning由360系统部大数据团队与 ...

  4. 奇虎360支持Unity引擎 将推3D页游无插件安装

    导读:奇虎360与Unity引擎合作,欲在今年9月推出3D画面网页游戏.游戏将实现"即点即用"的无插件体验. 新浪游戏讯 5月30日消息,奇虎360今日召开媒体发布会,宣布与Uni ...

  5. Shadow插件化框架设计——replugin原理(架构师进阶之旅)

    DroidPlugin原理解析 从系统设计的角度,组件和窗口的逻辑实体都存在于系统服务,比如Activity创建后,其逻辑控制主体在AMS,对于窗口,其逻辑控制主体在WMS android将逻辑主体放 ...

  6. 360开源mysql_奇虎360开源基于Kubernetes管理平台 Wayne

    近日奇虎 360 宣布正式开源 Wayne ,这是一个由 360 搜索云平台团队开发的通用的.基于 Web 的 Kubernetes 多集群一站式可视化管理平台.内置了丰富多样的功能,满足企业的通用需 ...

  7. CNCF案例研究:奇虎360

    公司:奇虎360 地点:中国北京 行业:计算机软件 挑战 中国软件巨头奇虎360科技的搜索部门,so.com是中国第二大搜索引擎,市场份额超过35%.该公司一直在使用传统的手动操作来部署环境,随着项目 ...

  8. 奇虎360温铭:OpenResty的未来

    2019独角兽企业重金招聘Python工程师标准>>> OpenResty 是把 Nginx 和 Lua 有机融合在一起的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第 ...

  9. [转]奇虎360黑匣子之谜:暗藏后门盗取用户隐私

    每经记者 秦俑 昨日(2月25日),正是奇虎360所有APP产品被苹果全面下架一个月的日子. 就在此前,360的CFO亲赴美国"负荆请罪",但360相关产品并未重新上架. 知情人士 ...

  10. java 轻量级插件化框架_轻量级插件化框架——Small

    photo-1441716844725-09cedc13a4e7.jpg 前言 世界那么大,组件那么小.Small,做最轻巧的跨平台插件化框架. --Galenlin 这是Small作者,林光亮老师, ...

最新文章

  1. mysql整理类型_Mysql 时间类型整理
  2. cocoahttpserver 载入本地html,利用CocoaHttpServer搭建手机本地服务器
  3. MyBatis学习总结[4]-ResultMap子元素
  4. 链表学习(一)静态链表的构造
  5. 怎么把php的文件链接成html,怎么把动态的php文件转换成静态的html文件,html文件是php文件…...
  6. Django搭建个人博客:上传头像图片
  7. JAVA中Explain注解用法,mysql之explain详解(分析索引最佳使用)
  8. 蓝桥杯 ALGO-31 算法训练 开心的金明
  9. JavaScript 代码规范
  10. Spring jdbc Template和Spring 事务管理
  11. BZOJ3828 : [Poi2014]Criminals
  12. c语言 pdf支持库,解决支持库版本兼容问题:引入包时候support包有红色下划线
  13. 代码雨和N个本地磁盘的制作
  14. 多周期MIPS CPU硬布线控制器设计
  15. python 图标题上移_请问如何在这个Python中将标题一起爬下来啊
  16. Adobe Photoshop 2021 22.4.3 中英文+Neural Filters 含神经滤镜 下载
  17. Performance Test Framework (PTF)是压力测试框架(轩)
  18. (半翻译)篡改mac应用后,如何resign签名,重新获得mac系统的信任?
  19. 【Java】如何优雅的使用HttpClient
  20. CENTOS上的网络安全工具(九)走向Hadoop(1) SingleNode模式安装与配置

热门文章

  1. [渝粤教育] 武汉大学 马克思主义哲学原理精粹九讲 参考 资料
  2. pk 打包文件_【旅行】同样是旅行,为啥中国人喜欢拉行李箱,老外喜欢背大包?附干货:行李打包锦囊...
  3. 《创业时代》原型:为什么Talkbox、子弹短信都失败了?
  4. 4回溯法、空间状态树
  5. 转载 The database could not be exclusively locked to perform the operation(SQL Server 5030错误解决办法)...
  6. html将图片转为圆形并居中
  7. 16位深度图像转8位灰度
  8. 音标对照表—kk,88
  9. matlab全桥电路设计,全桥变换电路的Matlab仿真及实验装置开发.pdf
  10. 反编译工具apktool