奇虎360 replugin 插件化框架集成
插件化分为两种项目,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 插件化框架集成相关推荐
- 从50亿图文中提取中文跨模态新基准Zero,奇虎360全新预训练框架超越多项SOTA
©作者 | 奇虎360人工智能研究院.清华大学 来源 | 机器之心 对于中文社区来说,本文提出的大规模跨模态基准数据集无疑很有价值. 视觉语言预训练(VLP)主要学习视觉与自然语言之间的语义对应关系. ...
- 360 RePlugin插件化-项目接入
RePlugin是一套完整的.稳定的.适合全面使用的,占坑类插件化方案,由360手机卫士的RePlugin Team研发,也是业内首个提出"全面插件化"(全面特性.全面兼容.全面使 ...
- 奇虎360正式开源其深度学习调度平台,支持TensorFlow、MXNet等框架
奇虎360今日宣布开源深度学习调度平台XLearning,项目开源地址:https://github.com/Qihoo360/XLearning. \\ XLearning由360系统部大数据团队与 ...
- 奇虎360支持Unity引擎 将推3D页游无插件安装
导读:奇虎360与Unity引擎合作,欲在今年9月推出3D画面网页游戏.游戏将实现"即点即用"的无插件体验. 新浪游戏讯 5月30日消息,奇虎360今日召开媒体发布会,宣布与Uni ...
- Shadow插件化框架设计——replugin原理(架构师进阶之旅)
DroidPlugin原理解析 从系统设计的角度,组件和窗口的逻辑实体都存在于系统服务,比如Activity创建后,其逻辑控制主体在AMS,对于窗口,其逻辑控制主体在WMS android将逻辑主体放 ...
- 360开源mysql_奇虎360开源基于Kubernetes管理平台 Wayne
近日奇虎 360 宣布正式开源 Wayne ,这是一个由 360 搜索云平台团队开发的通用的.基于 Web 的 Kubernetes 多集群一站式可视化管理平台.内置了丰富多样的功能,满足企业的通用需 ...
- CNCF案例研究:奇虎360
公司:奇虎360 地点:中国北京 行业:计算机软件 挑战 中国软件巨头奇虎360科技的搜索部门,so.com是中国第二大搜索引擎,市场份额超过35%.该公司一直在使用传统的手动操作来部署环境,随着项目 ...
- 奇虎360温铭:OpenResty的未来
2019独角兽企业重金招聘Python工程师标准>>> OpenResty 是把 Nginx 和 Lua 有机融合在一起的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第 ...
- [转]奇虎360黑匣子之谜:暗藏后门盗取用户隐私
每经记者 秦俑 昨日(2月25日),正是奇虎360所有APP产品被苹果全面下架一个月的日子. 就在此前,360的CFO亲赴美国"负荆请罪",但360相关产品并未重新上架. 知情人士 ...
- java 轻量级插件化框架_轻量级插件化框架——Small
photo-1441716844725-09cedc13a4e7.jpg 前言 世界那么大,组件那么小.Small,做最轻巧的跨平台插件化框架. --Galenlin 这是Small作者,林光亮老师, ...
最新文章
- mysql整理类型_Mysql 时间类型整理
- cocoahttpserver 载入本地html,利用CocoaHttpServer搭建手机本地服务器
- MyBatis学习总结[4]-ResultMap子元素
- 链表学习(一)静态链表的构造
- 怎么把php的文件链接成html,怎么把动态的php文件转换成静态的html文件,html文件是php文件…...
- Django搭建个人博客:上传头像图片
- JAVA中Explain注解用法,mysql之explain详解(分析索引最佳使用)
- 蓝桥杯 ALGO-31 算法训练 开心的金明
- JavaScript 代码规范
- Spring jdbc Template和Spring 事务管理
- BZOJ3828 : [Poi2014]Criminals
- c语言 pdf支持库,解决支持库版本兼容问题:引入包时候support包有红色下划线
- 代码雨和N个本地磁盘的制作
- 多周期MIPS CPU硬布线控制器设计
- python 图标题上移_请问如何在这个Python中将标题一起爬下来啊
- Adobe Photoshop 2021 22.4.3 中英文+Neural Filters 含神经滤镜 下载
- Performance Test Framework (PTF)是压力测试框架(轩)
- (半翻译)篡改mac应用后,如何resign签名,重新获得mac系统的信任?
- 【Java】如何优雅的使用HttpClient
- CENTOS上的网络安全工具(九)走向Hadoop(1) SingleNode模式安装与配置
热门文章
- [渝粤教育] 武汉大学 马克思主义哲学原理精粹九讲 参考 资料
- pk 打包文件_【旅行】同样是旅行,为啥中国人喜欢拉行李箱,老外喜欢背大包?附干货:行李打包锦囊...
- 《创业时代》原型:为什么Talkbox、子弹短信都失败了?
- 4回溯法、空间状态树
- 转载 The database could not be exclusively locked to perform the operation(SQL Server 5030错误解决办法)...
- html将图片转为圆形并居中
- 16位深度图像转8位灰度
- 音标对照表—kk,88
- matlab全桥电路设计,全桥变换电路的Matlab仿真及实验装置开发.pdf
- 反编译工具apktool