Skip to content

Latest commit

 

History

History
120 lines (95 loc) · 3.86 KB

CHINESE.md

File metadata and controls

120 lines (95 loc) · 3.86 KB

VA banner

关于

VirtualApp是一个App虚拟引擎的完整实现(简称VA)。 VirtualApp允许你在App内创建一个虚拟空间,你可以在虚拟空间内任意的安装启动卸载APK,这一切都与外部隔离,就如同一个沙盒

运行在VA中的APK无需在外部安装,即VA支持免安装运行APK

在项目中,你可以通过引入VA来实现插件化双开

在安全领域,也可以通过VA来实现动态的App行为分析

在测试领域,你可以通过VA来实现高度可定制的App单元测试.

背景

VirtualApp诞生于2015年,经过一年的锤炼,才有了现在的能和兼容性

讨论技术话题

QQ Group: 553070909

快速开始

注意: 编译和运行项目请关闭你的Instant run.

  1. VirtualApp 使用了 @hide API, 因此你必须使用我们的 android.jar 来替换你已有的那个 (Android-SDK/platforms/android-23/{android.jar}).

  2. 在你的 AndroidManifest.xml 添加如下代码:

    <permission
        android:name="com.lody.virtual.permission.VIRTUAL_BROADCAST"
        android:protectionLevel="signature" />
    <uses-permission android:name="com.lody.virtual.permission.VIRTUAL_BROADCAST" />
    <service android:name="com.lody.virtual.client.stub.KeepService" android:process=":x"/>
    <provider
            android:process=":x"
            android:authorities="virtual.service.BinderProvider"
            android:name="com.lody.virtual.service.BinderProvider"
            android:exported="false" />
    <activity
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:name="com.lody.virtual.client.stub.ShortcutHandleActivity" android:exported="true"/>        
    <activity
            android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale"
            android:name="com.lody.virtual.client.stub.StubActivity$C0" android:process=":p0" >
            <meta-data android:name="X-Identity" android:value="Stub-User"/>
    </activity>
    <provider
            android:process=":p0"
            android:authorities="virtual.client.stub.StubContentProvider0"
            android:name="com.lody.virtual.client.stub.StubContentProvider$C0"
            android:exported="false">
            <meta-data android:name="X-Identity" android:value="Stub-User"/>
    </provider>
    <!--and so on-->
  1. 将你的Host和Plugins需要的所有权限加入到你的AndroidManifest.xml.

  2. 前往你的Application并添加如下代码:

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        try {
            VirtualCore.getCore().startup(base);
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onCreate() {
        super.onCreate();
        VirtualCore.getCore().handleApplication(this);
        if (!VirtualCore.getCore().isVAppProcess()) {
            // Do some thing...
        }
    }
  1. For Install a virtual App, use this function:
    VirtualCore.getCore().installApp({APK PATH}, flags);
  1. For Launch a virtual App, use this function:
    VirtualCore.getCore().launchApp({PackageName});
  1. For uninstall a virtual App, use this function:
    VirtualCore.getCore().uninstallApp({PackageName});
  1. If you need to get the details of App, use this function:
    VirtualCore.getCore().findApp({PackageName});

文档

VirtualApp 目前暂时没有文档,Please read the fucking source code。

License

LGPL 3.0

关于Author