Neptune是一套灵活,稳定,轻量级的插件化方案。
它现在每天在数亿的设备上动态加载和运行插件,支撑着爱奇艺许多独立业务模块的需求和发展,如爱奇艺文学,电影票等。
Neptune现在完全兼容Android P系统,可以在Android P设备上稳定且无缝地运行。框架只使用了少数几个浅灰名单中的API。
| 特性 | 描述 |
|---|---|
| 组件 | Activity/Service/Receiver |
| 主程序Manifest注册 | 不需要 |
| 共享宿主代码 | 支持 |
| 共享宿主资源 | 支持 |
| 资源隔离 | 支持 |
| 独立运行插件 | 支持 |
| Android特性 | 支持几乎所有 |
| 兼容性 | 几乎市面上所有ROM |
| 进程隔离 | 支持 |
| 插件之间相互依赖 | 支持 |
| 插件开发 | 接近原生APP开发 |
| 支持的Android版本 | API Level 14+ |
在App模块的build.gradle中compile移入Neptune库
implementation 'org.qiyi.video:neptune:2.7.0'在Application#onCreate()阶段初始化Neptune
public class XXXApplication extends Application {
@Override
public void onCreate() {
NeptuneConfig config = new NeptuneConfig.NeptuneConfigBuilder()
.configSdkMode(NeptuneConfig.INSTRUMENTATION_MODE)
.enableDebug(BuildConfig.DEBUG)
.build();
Neptune.init(this, config);
}
}更多细节和开发指南请参考wiki。
如果插件APP需要共享宿主APP的一些资源,你需要在插件工程根目录下的build.gradle中的buildscript块中添加如下依赖
dependencies {
classpath 'com.iqiyi.tools.build:neptune-gradle:1.4.0'
}在App模块的build.gradle中应用gradle插件并添加相应配置
apply plugin: 'com.qiyi.neptune.plugin'
neptune {
pluginMode = true // In plugin apk build mode
packageId = 0x30 // The package id of Resources
hostDependencies = "{group1}:{artifact1};{group2}:{artifact2}" // host app resources dependencies
}我们真诚地欢迎任何有价值的PR提交,包括代码,建议和文档。
Neptune is Apache v2.0 Licensed.
