Blackbox 中文文档 下载 App

三步把虚拟引擎接入自己的工程:初始化、安装、启动

集成只涉及三步

官方说明给出的最小集成路径非常短:初始化引擎 → 安装应用到虚拟环境 → 启动应用。以下代码整理自项目公开说明(Apache 2.0 协议),以 Java 为例。

第一步:在 Application 中初始化引擎

引擎必须在任何虚拟应用启动前完成初始化,官方做法是挂在 Application 的生命周期里:

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    try {
        BlackBoxCore.get().doAttachBaseContext(base, new ClientConfiguration() {
            @Override
            public String getHostPackageName() {
                return base.getPackageName();
            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }
}

@Override
public void onCreate() {
    super.onCreate();
    BlackBoxCore.get().doCreate();
}

两个回调的分工:attachBaseContext 阶段挂载引擎上下文(越早越好),onCreate 阶段完成引擎创建。ClientConfiguration 里的宿主包名配置返回宿主应用自己的包名即可。

第二步:安装应用到虚拟环境

两种入口,对应应用「已装在系统里」和「只有安装包」两种状态:

// 已安装的应用:直接给包名
BlackBoxCore.get().installPackageAsUser("com.tencent.mm", userId);

// 未安装的应用:给 APK 路径
BlackBoxCore.get().installPackageAsUser(new File("/sdcard/com.tencent.mm.apk"), userId);

userId 对应引擎的用户(容器)体系——应用装进哪个容器,就传哪个用户的 id,与界面上「用户备注与切换」背后的体系一致。

第三步:启动虚拟应用

BlackBoxCore.get().launchApk("com.tencent.mm", userId);

包名加用户 id,引擎接管后续的进程创建与环境构造,应用在虚拟环境内跑起来。

兼容性前置提醒

官方给集成者的一条关键建议:条件允许时把 targetSdkVersion 降到 28 或以下,兼容性更好。此外架构问题在集成场景同样存在——宿主本身也要考虑覆盖 32/64 位应用的范围,原理见32 位与 64 位安装包有什么区别。

跑通之后

三个调用能跑通,说明引擎初始化与调度链路正常。更细粒度的操作(枚举已装应用、读用户信息等)见下一页核心接口速查。