VirtualAPK 插件化的简单使用

第一步:

根目录的build.gradle文件的配置

apply plugin: 'com.didi.virtualapk.host'
classpath 'com.didi.virtualapk:gradle:0.9.8.6'

第二步:

宿主gradle文件的配置

apply plugin: 'com.didi.virtualapk.host'
implementation 'com.didi.virtualapk:core:0.9.8'

 

第三步

在自定义applicaiton中去初始化VirtualAPK

并加载指定的插件

public class MyApp extends Application {
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        PluginManager.getInstance(base).init();
    }
    @Override
    public void onCreate() {
        super.onCreate();
        String pluginPath = Environment.getExternalStorageDirectory().getAbsolutePath().concat("/vk.apk");
        File plugin = new File(pluginPath);
        if (plugin.exists()) {
            try {
                PluginManager.getInstance(this).loadPlugin(plugin);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

第四步:

插件的gradle文件

apply plugin: 'com.didi.virtualapk.plugin'
implementation  'com.didi.virtualapk:core:0.9.8'
virtualApk {
    packageId = 0x6f
    targetHost = 'C:\\Users\\Devin\\Desktop\\virtualapk\\app'//宿主应用的app模块路径
    applyHostMapping = true
}

第五步

宿主中通过Intent,和包名,activity名,跳转到插件的activity中

public class MainActivity extends AppCompatActivity {
    TextView tv1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv1 = findViewById(R.id.tv_suzhu);
        tv1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClassName("com.example.utils", "com.example.utils.UtilsActivity");
                startActivity(intent);
            }
        });

    }
}

第六步

打包插件

打包好的插件在这

把这个APK文件 下载到sd卡的根目录 并改名为   vk.apk。

然后可以运行程序了。

 

说一下在使用VirtualAPK中遇到过的问题

1.第六步打包插件时,一直打包失败,先通过build APKs 把宿主打包,再去打包插件就可以了

2.我的AS是3.4.2    build:gradle是3.4.2    gradle是5.1.1   NDK是18

一开始去直接依赖virtualapk时一直报错,百度了好多解决方案后

把build:gradle 修改为3.0.0 

gradle修改为4.4

ndk修改为16

targetHost中要指向宿主的模块路径,如果指向了插件,会报错,并且百度不到解决方案,

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值