Android插件开发

Posted _yegong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android插件开发相关的知识,希望对你有一定的参考价值。

插件开发的概念:

  对于一个功能特别多,代码量特别大的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插件开发的主要内容,如果未能解决你的问题,请参考以下文章

Android开发常用代码片段

Android 插件化VirtualApp 源码分析 ( 目前的 API 现状 | 安装应用源码分析 | 安装按钮执行的操作 | 返回到 HomeActivity 执行的操作 )(代码片段

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

Android代码片段

Android 逆向Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )(代码片段

Android课程---Android Studio使用小技巧:提取方法代码片段