插件更新

1 使用本地插件更新

本地插件更新使用本地插件安装函数即可,apkplug会自动检测plugin.xml下Bundle-Version版本是否有增加

2 使用云端插件更新

此接口可以更新某个本地已经安装的插件。接口会先查询有没有比这个已经安装的插件更新的版本,如果有就下载覆盖安装;如果已经是最新版本则不会再下载安装。

接口流程:

具体调用代码:

    BundleContext bundleContext = FrameworkFactory.getInstance().getFrame().getSystemBundleContext();
        org.osgi.framework.Bundle[] bundles = bundleContext.getBundles();

        for(org.osgi.framework.Bundle bundle : bundles){
            PlugManager.getInstance().updataPlug(bundle , new OnUpdataListener() {
            @Override
            public void onDownloadProgress(String url, String filePath, long bytesWritten, long totalBytes) {
                Log.d(filePath,"had downloaded "+bytesWritten+" all in "+totalBytes);
            }

            @Override
            public void onUpdataSuccess(org.osgi.framework.Bundle bundle) {
                Log.d("onInstallSuccess",bundle.getName()+" had installed");
            }

            @Override
            public void onUpdataFailuer(int i, org.osgi.framework.Bundle bundle,String errorMsg) {
                Log.d("onInstallFailuer",bundle.getName()+errorMsg);
            }

            @Override
            public void onDownloadFailure(String errorMsg) {
                Log.d("failure",errorMsg);
            }
        });
      }

接口说明:

插件更新接口为:

public void updataPlug(Bundle bundle,final OnUpdataListener listener)

或者

PlugManager.getInstance().updataPlug(Bundle bundle, InstallProperties properties, OnUpdataListener listener)

后者可以通过InstallProperties 传入一些安装检测条件,其他相同

Bundle 代表本地安装的插件,参考附录

OnUpdataListener是更新回调接口,返回如下回调:

void onDownloadProgress(String url, String filePath, long bytesWritten, long totalBytes);
void onDownloadFailure(String errorMsg);
void onUpdataSuccess(Bundle bundle, PlugInfo plugInfo);
void onUpdataFailuer(int i,PlugInfo plugInfo,String errorMsg);

onDownloadProgress为下载进度回调,onUpdata* 为更新完成安装后回调,onDownloadFailure返回下载失败信息。

更新失败状态码参考附录