满帮集团JAVA,GitHub - xuexiangjys/PhantomTest: 满帮集团插件化框架Phantom使用演示

PhantomTest

满帮集团插件化框架Phantom使用演示

Phantom插件化演示(请star支持)

fb6002b76b68116d3888c7fe60411057.gif

演示demo下载

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f25453525414525424625453425423825424261706b2d312e384d2d626c75652e737667

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f25453625384625393225453425424225423661706b2d314d2d626c75652e737667

注意:请将插件apk拷贝至sdcard下。

Phantom介绍

Phantom 是满帮集团开源的一套稳定、灵活、兼容性好的 Android 插件化方案。

Phantom特点

兼容性好:零 Hook,没有调用系统的 hidden API,完美兼容 Android 9.0

功能完整:插件支持独立应用的绝大部分特性

稳定可靠:历经货车帮旗下多款产品 50+ 插件两年多千万级用户验证(稳定性和兼容性指标都在 4 个 9 以上)

部署灵活:宿主无需升级(无需在宿主 AndroidManifest.xml 中预埋组件),即可支持插件新增组件,甚至新增插件

易于集成:无论插件端还是宿主端,只需『数行』就能完成接入,改造成本低

Phantom不支持项

暂时不支持 Gradle 4.x + Android Gradle Plugin 3.x

暂时不支持 Android DataBinding

不支持ContentProvider

Phantom 与主流开源插件框架的对比【官方给的】

Hook 数量

较多

较少

较少

仅一处

四大组件

全支持

只支持 Activity

全支持

全支持

除 ContentProvider 外,全支持

剔除公共库

支持

支持

支持

不支持

支持

兼容性适配

非常高

插件热更新

不支持

不支持

不支持

不支持

支持

插件快速部署

不支持

不支持

不支持

支持

支持

插件宿主通信

一般

一般

一般

Phantom集成指南

宿主程序

宿主程序相当于一个空壳容器,用于加载插件APK,需要注意的是,插件使用到的权限,宿主也要同步获取,否则将无法正常运行。

配置Gradle脚本

特别需要注意的是,这里一定要使用 Gradle 4.4 + Android Gradle Plugin 3.1.4的方式,否则会

1.在宿主项目根目录下的 build.gradle 中增加宿主 gradle 依赖

buildscript {

dependencies {

classpath 'com.wlqq.phantom:phantom-host-gradle:3.1.2'

}

}

2.在宿主项目的 App 模块的 build.gradle 中增加宿主 library 依赖,并应用宿主 gradle 依赖包含的 gradle 插件 com.wlqq.phantom.host。

apply plugin: 'com.wlqq.phantom.host'

dependencies {

implementation 'com.wlqq.phantom:phantom-host-lib:3.1.3'

}

插件初始化

在Application的onCreate初始化 Phantom 插件框架.详细配置可点击查看

public class YourApplication extends Application {

@Override

public void onCreate() {

super.onCreate();

//初始化Phantom框架,并加载已经安装的插件

PhantomCore.getInstance().init(this, new PhantomCore.Config());

}

}

插件安装和卸载

详细说明请见官方文档

1.插件安装

installPlugin: 从SDCard卡上安装插件。

PhantomCore.getInstance().installPlugin(Environment.getExternalStorageDirectory() + "/com.xuexiang.xqrcodetest_1.0.apk");

installPluginFromAssets: 从assets下安装插件

PhantomCore.getInstance().installPluginFromAssets("plugins/com.wlqq.phantom.plugin.view_1.0.0.apk")

2.如何判断插件是否已安装

使用PhantomCore.getInstance().isPluginInstalled("插件包名")判断。

PhantomCore.getInstance().isPluginInstalled("com.xuexiang.xqrcodetest")

3.插件卸载

使用PhantomCore.getInstance().uninstallPlugin("插件包名")来卸载插件。

PhantomCore.getInstance().uninstallPlugin("com.xuexiang.xqrcodetest");

4.插件启用

插件安装完之后,启动插件代表该插件将被立即加载到内存中,调用 PluginInfo 接口中 start() 即可.

InstallResult ret = PhantomCore.getInstance().installPlugin(Environment.getExternalStorageDirectory() + "/com.xuexiang.xqrcodetest_1.0.apk");

// 插件安装成功后启动插件(执行插件的 Application#onCreate 方法)

if (ret.isSuccess() && ret.plugin.start()) {

Intent intent = new Intent();

// 指定插件 Activity 所在的插件包名以及 Activity 类名

intent.setClassName("com.xuexiang.xqrcodetest", "com.xuexiang.xqrcodetest.Main2Activity");

PhantomCore.getInstance().startActivity(this, intent);

}

插件程序

插件程序作为一个独立的apk,可以独立安装,也可以被宿主程序安装加载使用。需要注意的是,插件使用到的权限,宿主也要同步获取,否则将无法正常运行。

配置Gradle脚本

特别需要注意的是,这里一定要使用 Gradle 4.4 + Android Gradle Plugin 3.1.4的方式,否则会

1.在插件项目根目录下的 build.gradle 中增加插件 gradle 依赖

buildscript {

dependencies {

classpath 'com.wlqq.phantom:phantom-gradle-plugin:3.1.3'

}

}

2.在插件项目 App 模块的 build.gradle 中增加插件 library 依赖,并应用宿主 gradle 依赖包含的 gradle 插件 com.wlqq.phantom.plugin

apply plugin: 'com.wlqq.phantom.plugin'

android {

buildTypes {

release {

minifyEnabled true

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

// Phantom 混淆配置文件

proguardFile 'proguard-phantom.pro'

}

}

}

dependencies {

compileOnly 'com.wlqq.phantom:phantom-plugin-lib:3.1.2'

compile 'com.android.support:support-v4:28.0.0'

}

3.配置PhantomPlugin插件的参数

着重注意hostApplicationId和hostAppLauncherActivity这两个参数,是需要你配成自己的宿主信息。

phantomPluginConfig {

// BEGIN 剔除公共库配置

// 若插件中有使用 support-v4 ,则需要剔除掉(必须)

excludeLib "com.android.support:support-v4:28.0.0"

// END

// BEGIN 生成插件额外的混淆配置文件,避免因剔除公共库引起的混淆问题

libraryJarsProguardFile file('proguard-phantom.pro')

// END

// BEGIN 快速部署插件配置

// 宿主包名,这里需要改成你自己的

hostApplicationId = "com.xuexiang.phantomtest"

// 宿主 launcher Activity full class name

hostAppLauncherActivity = "com.xuexiang.phantomtest.MainActivity"

// 插件包名,这里需要改成你自己的

pluginApplicationId = android.defaultConfig.applicationId

// 插件版本名

pluginVersionName = android.defaultConfig.versionName

// END

}

4.在插件 AndroidManifest.xml 中申明对宿主 Phantom 插件框架版本依赖(目前版本名是 3.0.0,对应版本号为 30000)

...

android:name="phantom.service.import.PhantomVersionService"

android:value="30000" />

编译

编译插件

与编译独立 APK 相同,如:

./gradlew assembleDebug

./gradlew assembleRelease

编译插件并将插件 APK 安装到宿主

插件端使用的 Gradle 插件会自动为项目的 variant 生成相应的插件安装 task ,格式为 phInstallPlugin${variant} ,例如:

./gradlew phInstallPluginDebug

./gradlew phInstallPluginRelease

注意:以上命令会自动将插件的apk文件push到手机的sdcard目录。

其他说明

联系方式

Phantom官方交流 QQ 群号:690051836

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f25453725383225423925453525383725424225453425423825383025453925393425414525453525384125413025453525383525413551512545342542412541342545362542352538312545372542452541342d3630323038323735302d626c75652e737667

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值