插件开发的概念:

  对于一个功能特别多,代码量特别大的App比如支付宝、360手机助手来说,如果把所有的功能和代码都写在一个App中,就会造成App体积过于庞大,用户下载体验差,不方便测试,业务、模块耦合性过高等问题。插件开发就是指在一个APP中只完成基础和主要功能模块,对于其他可选的功能模块采用下载插件的方式实现。通常来讲,一个插件就是一个完成了某个功能模块的app,那么安装一个插件,就是安装一个具有该功能模块的apk文件。

插件开发的解决方案:

  目前的插件开关解决方案主要有360的DroidPlugindynamic-load-apk携程的DynamicAPK 等等。其中360的DroidPlugin框架最为稳定。

使用DroidPlugin的步骤:

  • 创建module,依赖DroidPlugin库:

    compile project(':Libraries:DroidPlugin')
  • 在Application中初始化DroidPlugin:

    public class MyApp extends Application {
    @Override
    public void onCreate() {
    super.onCreate();
    PluginHelper.getInstance().applicationOnCreate(getBaseContext());
    }
    @Override
    protected void attachBaseContext(Context base) {
    PluginHelper.getInstance().applicationAttachBaseContext(base);
    super.attachBaseContext(base);
    }
    }
  • 编写代码,实现安装插件功能:

    public void installNet(View v){
    String filepath = Environment.getExternalStorageDirectory()+"/app-minifyEnabled.apk";
    try {
    PluginManager.getInstance().installPackage(filepath, 0);
    Log.e(TAG, "installNet: 插件安装成功!");
    } catch (RemoteException e) {
    e.printStackTrace();
    }
    }
  • 编写代码,实现启动插件功能:

    public void lanchPlugin(View v){
    PackageManager pm = getPackageManager();
    Intent intent = pm.getLaunchIntentForPackage("com.itheima.appthin98");
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    }

Android插件开发的更多相关文章

  1. Android 插件开发,做成动态加载

    为什么需要插件开发: 相信你对Android方法数不能超过65K的限制应该有所耳闻,随着应用程序功能不断的丰富,总有一天你会遇到一个异常: Conversion to Dalvik format fa ...

  2. android插件开发机制

    插件机制实质上就是由主体程序定义接口,然后由插件去实现这些接口,以达到功能模块化.Android系统是基于Linux内核的,其安全机制也继承了Linux的特性,再加上android framework ...

  3. 88、android 插件开发教程(转载)

    http://blog.csdn.net/qq435757399/article/details/46521085 http://blog.csdn.net/t12x3456/article/deta ...

  4. ionic2 自定义cordova插件开发以及使用 (Android)

    如何写一个cordova 用于ionic2项目中呢,在搜索了一番之后,千篇一律,我都怀疑那些文章是不是全部都是复制来复制去的,而且都不是很详细.我自己也捣鼓了一下午,踩了很多坑.所以特此写这下这篇,记 ...

  5. Android的Proxy/Delegate Application框架 (主要介绍插件化开发)

    1. 插件化的原理 是 Java ClassLoader 的原理:Java ClassLoader基础 常用的其他解决方法还包括:Google Multidex,用 H5 代替部分逻辑,删无用代码,买 ...

  6. Ios插件开发

    Ios插件开发 http://www.exmobi.cn/course/course_26.html Android插件开发 http://www.exmobi.cn/course/course_25 ...

  7. 插件开发遇到的坑------final 型变量,编译过程被优化

    android 插件开发遇到的坑 今天遇到一个坑,pdf 插件,调用了主工程的一个静态final 字符串,但是主工程里面已经没有这个字符串了,却没有崩溃. 后来同事说,因为字符串可能已经直接被写死了. ...

  8. 综述-如何克服HTML5的“性工能”障碍

    http://ask.dcloud.net.cn/docs HTML5自出现以来,几经风雨,虽看似很有前途,但实际使用问题太多,DCloud为此踩了无数坑.但我们从未放弃,我们加入了W3C,发起了 H ...

  9. java的几个特性

    前言 本文主要介绍java语言的三个特性:类型协变和逆变,动态代理和静态代理,注解. 协变和逆变 借用Treant的博文,逆变与协变用来描述类型转换(type transformation)后的继承关 ...

随机推荐

  1. angular $resource 的 get请求 和 post请求

    1.语法: $resource(url,[paramDefaults],[actions],options); 详解: (1)url:一个参数化的url模板 (2)paramDefaults:url参 ...

  2. OUTPUT 子句

    除了修改数据以外,一般不会希望修改语句后再做其他事情.也就是说,一般不会希望修改语句能够返回任何输出.然而,在有些场合下,能够从修改过的行中返回数据,这个功能可能也有一定的用处. 例如,考虑UPDAT ...

  3. Python练习题2

    如果真的想学精,学什么都不是好学的,如果真的想把Python学的出神入化,几乎自己想做什么都可以,就要下定恒心,坚持下去. 接下来继续更新Python练习题2,通过更新前一部的练习题让自己也学到了不少 ...

  4. Selenium系列之--01 简介【转】

    1.selenium 工具组件 1.1 selenium2,也称为selenium webdriver.webdriver原来是另一个自动化测试工具,后与selenium 合并了.webdriver直 ...

  5. HDU 4786(最小生成树 kruskal)

    题目链接:pid=4786" target="_blank">http://acm.hdu.edu.cn/showproblem.php?pid=4786 Prob ...

  6. STM32的精确延时

    /*---------------------------------------------------------- 文件名:systick.c 文件描写叙述:sysTick 系统滴答时钟1us中 ...

  7. hdu 4970 Killing Monsters(数组的巧妙运用) 2014多校训练第9场

    pid=4970">Killing Monsters                                                                   ...

  8. DataTables warning requested unknown parameter

    This is possibly the most cryptic warning message that DataTables will show. It is a short error mes ...

  9. hdu4908 & BestCoder Round #3 BestCoder Sequence(组合数学)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4908 BestCoder Sequence Time Limit: 2000/1000 MS (Jav ...

  10. (19)javaWeb项目名称修改

    1,选中项目,[右键]-[Refactor]-[Rename] 在弹出面板中,填写New Name 点击[OK] 2,改变运行时目录名称 选中项目[右键]-[Properties] 在弹框中选择选择[ ...