本主题将介绍如何将OSGI框架转换为在android上运行。 然后,它提供了将android包转换为OSGI包的能力,可以调用android API。 在目前阶段,这些Android OSGI捆绑软件无法做的唯一事情就是操纵活动并使用资源和资产。 我一直在努力解决这个限制。 我希望在这个问题上有好消息。 我发现在Eclipse中使用Create Plugin项目工具比在OSGI包中转换标准的android包更加困难,所以我不会多说这个。 您可以在本邮件末尾的“日志”部分中logging我的成就。 我指的是Knopflerfish项目,因为它是我工作的基础。 这些修改是为了在Knopflerfish OSGi android项目上执行,但实际上适用于其他OSGI框架。 不需要修改OSGi框架本身,我们只会更新Knopflerfish发行版tool目录下的项目KfServiceLib和KfBasicApp 。 添加基本的Android支持捆绑 function和限制 这是android框架的第一级定制。 这些更改将与上下文或调用线程无关,但它们允许使用像android.util.Log这样有限的一组android API类。 由于这些变化,bundle将能够在他们的原型和实现中使用android类。 尽pipe如此,由于缺less强制性参考,它们将无法与graphics用户界面,内容提供者和系统服务等相关。 Knopflerfish应用程序中的更改 就像它们一样,tools / android / apk下的应用程序能够在android上执行OSGi框架,但前提是bundle只调用java类。 对于作为Knopflerfish框架一部分的捆绑包,情况就是这样,但是想要调用android API的自定义捆绑包是什么? 以下是在框架中进行的更改,以启用parsingandroid类的bundle。 首先,android包必须是框架包的一部分,以便解决。 这是OSGi属性org.osgi.framework.system.packages.extra的目的 在创build框架之前将属性设置为要导出的android包列表,然后进行设置。 注意野生字符android.*似乎没有效果:我们必须像下面一样一个一个的告诉每个包。 在文件src / org / knopflerfish / android / service / KfApk.java中添加到KfServiceLib static final String ANDROID_FRAMEWORK_PACKAGES = ( "android," + […]