前言

动态加载系列文章
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,全部修改为自己 启动、安装类中的包名,类似下边:


Android 动态加载(六) - 360开源框架DroidPlugin的使用介绍_第1张图片 图片.png

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

2. 使用DroidPlugin好处


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

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

更多相关文章

  1. android动态墙纸有关问题
  2. 动态添加TableRow
  3. Android hardware so加载流程
  4. android动画源码合集、动态主题框架、社交app源码等
  5. EasyLoader(简单加载)实例
  6. MVVM模式下WPF动态展示图片实例分析
  7. Asp.NET页面事件加载的顺序是什么样的
  8. C#如何使用ILGenerator实现动态生成函数的实例
  9. C#动态数据绘图graphic的实现方法介绍

随机推荐

  1. Android学习笔记(9)————Android的三
  2. Android Testing Point
  3. Android Wifi的使用
  4. android JNI dev
  5. Android UI控件详解-GridView(网格视图)
  6. Cheatsheet: 2013 07.21 ~ 07.31
  7. Android 用手动组拼的方式生成xml
  8. Android中使用讯飞语音合成(报21001)组件未
  9. Android开发遇到的问题————android.c
  10. android 登陆界面