贵有恒,何必三更起、五更眠、最无益,只怕一日曝、十日寒。这篇文章主要讲述Android插件开发相关的知识,希望能为你提供帮助。
插件开发的概念:
对于一个功能特别多,代码量特别大的App比如支付宝、360手机助手来说,如果把所有的功能和代码都写在一个App中,就会造成App体积过于庞大,用户下载体验差,不方便测试,业务、模块耦合性过高等问题。插件开发就是指在一个APP中只完成基础和主要功能模块,对于其他可选的功能模块采用下载插件的方式实现。通常来讲,一个插件就是一个完成了某个功能模块的app,那么安装一个插件,就是安装一个具有该功能模块的apk文件。
插件开发的解决方案:
目前的插件开关解决方案主要有360的DroidPlugin,dynamic-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(); } }
- 【Android插件开发】编写代码,实现启动插件功能:
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 websocket 应用
- android 文件存储对文件名大小写不敏感
- Android之解决打补丁包后移动端为什么不升级,升级之后出现“应用未安装“,以及更新成功之后反复更新问题
- caffe之android移植
- Android AOP之路三 Android上的注解
- Android WebView 自适应屏幕
- Android性能优化--关于内存溢出
- android sqlite3命令行检查自己的代码操作数据库是否正确
- 关于android(getSlotFromBufferLocked的问题)