【问题标题】:Using modularization in Android在 Android 中使用模块化
【发布时间】:2013-04-23 04:58:06
【问题描述】:

目标是能够为主应用程序开发模块/插件 (apks)。

我google了一下,发现有通过广播接收器(http://www.openintents.org/)使用意图,但是这种方法的缺点是内存消耗,因为我会使用多个虚拟机。

关于 OSGi,找不到任何对 android 非常清楚的东西,只有一个应用程序使用 Apache Felix OSGi 实现,但在尝试配置时发现许多错误 (http://www-irisa.univ-ubs.fr/CASA/dev/felixdroid/index.html)。

我发现没有正在开发/使用的最新示例。我想知道,这些天来,对于那些想要在 android 应用程序中提供模块化的人来说,是否有一些强有力的策略(针对 OSGI)?

如果有人知道任何框架或 API,请告诉我?

【问题讨论】:

  • 您能否举例说明您希望在移动和 Android 环境中使用此插件架构实现什么目标?
  • 例如:一个面向销售的平板电脑应用程序,我可以在其中集成日历、聊天、服务订单、报告等模块。我们的想法是让应用程序根据每个人的需求进行定制,以便使用该解决方案。
  • 好吧,我真的认为你应该考虑使用意图。如果您希望您的应用程序通过一些旨在与您的应用程序一起使用的插件进行扩展,那么您可以定义新的意图操作并要求这些插件与它们一起使用。另外,你打算使用多个虚拟机做什么?
  • OSGi 基于 Java VM 而不是 Dalvik VM。每个 Android 应用程序都在一个单独的 Dalvik VM 实例中执行,而所有 OSGi 应用程序都在同一个 Java VM 中执行。我不知道使用意图的插件是否会降低性能。
  • 您是正确的,每个应用程序都运行在自己的虚拟机中。我什至不知道我为什么问这个问题。我建议不要担心这一点,Android 已经过优化,可以在单独的 VM 上启动每个应用程序,您对性能/电池消耗的担忧应该更多地关注主应用程序和插件的工作方式。我的最终建议是仍然深入研究您想要完成的意图。

标签: java android plugins osgi modularity


【解决方案1】:

去年年底,我做了一个关于使用OSGi in Android的演讲。

简而言之:

  • Android 对您的模块化程度设置了一些限制(没有运行时链接,因此您要么不必使用它,要么非常仔细地设计您的 API),
  • 更喜欢服务而不是捆绑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    相关资源
    最近更新 更多