前言

动态加载系列文章
Android 动态加载(一) - 基础篇(一)
Android 动态加载(二) - 基础篇(二)
Android 动态加载(三) - 类的加载流程源码分析
Android 动态加载(四) - 简单demo实现
Android 动态加载(五) - 借尸还魂之代理Activity模式
Android 动态加载(六) - 360开源框架DroidPlugin的使用介绍

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


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

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

@Overridepublic void onCreate() {    super.onCreate();    //must behind super.onCreate()    PluginHelper.getInstance().applicationOnCreate(getBaseContext());     }@Overrideprotected 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

更多相关文章

  1. android字体的工作原理
  2. cc
  3. android动态墙纸有关问题
  4. 动态添加TableRow
  5. Android开发 准备工作
  6. Android(安卓)hardware so加载流程
  7. 更新sdk后,点击sdk管理器报出location of the android sdk has n
  8. android动画源码合集、动态主题框架、社交app源码等
  9. android 开发环境建立

随机推荐

  1. Android自动测试框架Espresso
  2. Android(安卓)使用三方库android-gif-dra
  3. Android自学笔记之 Activity详解
  4. 四种基本布局
  5. 最全的Android源码目录结构详解
  6. maven 学习笔记(五)-创建简单的eclipse+and
  7. Android解析XML
  8. 第十章 Android性能优化
  9. Android(安卓)定位
  10. Android(安卓)XML解析