Android应用程序的插件管理

5
我们希望开发一个可扩展的Android应用程序,并正在寻找处理插件的方法。
你认为哪种方法最好:
1. 使用Android的PackageManager。这里的问题是PM并不是为插件而设计的,因此我们需要自己实现依赖检查等功能。
2. 使用现有的Java框架,如JPF(Java Plugin Framework)或OSGi。OSGi对我们来说过于庞大了,在Android上也没有太多关于JPF的信息。
3. 其他想法?
2个回答

5
你所说的“插件”具体是什么意思?使用“Intent”和“IntentFilter”概念,你已经可以做很多我认为是“插件”的事情了。例如,你可以允许其他应用程序在你的上下文菜单中添加条目。

是的,我所说的“使用Android的PackageManager”就是指每个插件都有一个应用程序。但这绝对不完美,例如12个插件意味着在手机上安装了12个应用程序... - MasterScrat
1
在更深入地了解这个主题后,我们最终做了类似于这样的事情。 - MasterScrat

4
另一种方法是使用OSGi框架。不确定您是否熟悉此框架,但它允许您将应用程序构建为组件(称为bundle),并且这些组件可以安装、更新和卸载而无需停止其他组件。OSGi通常用于创建完全模块化的应用程序或为现有应用程序创建插件机制。
有几个开源的OSGi实现。Apache Felix可在Android上直接运行,并且将其嵌入到应用程序中也相当容易。
如果您有兴趣,我可以提供更多指针,因此请随时跟进此答案。

是的,OSGi是我们正在考虑的解决方案之一。我的担忧是它可能对我们的需求来说太大了,你知道安装Felix后需要多少空间吗?此外,OSGi在移动设备上是否足够快? - MasterScrat
1
该框架本身的磁盘占用空间约为400k。在运行时,内存需求主要取决于您安装的捆绑包/插件数量。我没有具体的数字,但进行实验非常容易。从经验上讲,我可以告诉您Felix在Android上运行良好。OSGi规范旨在在嵌入式设备上运行,其中大多数设备的性能远不如运行Android的现代智能手机。 - Marcel Offermans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接