【Android动态加载】Android 动态加载(六) - 360开源框架DroidPlugin的使用介绍

原文地址:https://www.jianshu.com/p/7dd23d39d11d

1. 360的DroidPlugin插件化架构使用步骤


详见360的github具体demo:
https://github.com/Qihoo360/DroidPlugin

1>:打开上边网址,下载源码;
2>:使用AS导入DroidPlugin的lib库,添加依赖;
3>:让BaseApplication继承 PluginApplication,如果自己还写了数据库、Mutidux等的话,就可以不继承,可以使用下边的方式去写;

@Override
public void onCreate() {
    super.onCreate();
    //must behind super.onCreate()
    PluginHelper.getInstance().applicationOnCreate(getBaseContext()); 
    
}
@Override
protected void attachBaseContext(Context base) {
    PluginHelper.getInstance().applicationAttachBaseContext(base);     
    super.attachBaseContext(base);
}

4>:安装从服务器下载下来的插件,比如摇一摇、漂流瓶、附近的人等等这些功能,它们都是一个单独的 apk,而我们为了演示,是直接打包一个 摇一摇功能的 apk,把该apk复制到 手机存储目录中,就表示已经从服务器下载了 插件:

        // 一定要这样
        PackageManager pm =  getPackageManager();
        // 有了apk路径是可以获取apk的包名
        PackageInfo info = pm.getPackageArchiveInfo(apkPath, PackageManager.GET_ACTIVITIES);
        String packageName = info.packageName;
        Intent intent = pm.getLaunchIntentForPackage(packageName);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.putExtra("user_name","Novate");
        startActivity(intent);

5>:安装

    /**
     * 点击安装apk
     */
    public void install(View view){
//        PluginManager.install(this , apkPath);
        // 下边是调用 360的DroidPlugin的 installPackage()方法
        try {
            int result = com.morgoo.droidplugin.pm.PluginManager.getInstance().installPackage(apkPath, 0);
            Log.e("TAG","result = "+result);
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    }

6>:这个时候有可能安装不上,比如说你手机上边安装了 360的一些apk,比如360卫士、360杀毒、360手机助手,可能会起冲突,解决方式如下:
找到DroidPlugin的AndroidManifest.xml文件,Ctrl+F搜索authorities,全部修改为自己 启动、安装类中的包名,类似下边:

 

图片.png

这个时候就可以实现类似微信中 朋友圈列表中摇一摇、漂流瓶、附近的人等等这样的功能,如果有新功能增加,只需要服务器给我们一个url地址、插件名称等,我们直接使用360的 DroidPlugin直接下载并且安装插件就ok,如果不需要了,就直接调用卸载该 apk的方法即可实现,就不需要用户总是去更新app,如果一直让用户去下载更新的话,会造成用户体验不是特别好。

2. 使用DroidPlugin好处


1>:你的插件apk不需要做特殊的处理,不像自己写的那个摇一摇功能,还需要自己去处理摇一摇内部的一些功能

具体代码已上传至github:
https://github.com/shuai999/AndroidPluginDemo.git

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值