我开发了一个小型 EMF 项目作为 OSGi Bundle。现在我想在带有 Apache Felix 的 android 上使用它。EMF 使用一些标准的 java 库。像 java.xml.xxx。通常 OSGi 系统包会导出这些。但在我的 android 案例中,它看起来像这样:
系统包 (0)
Bundle-Description = 此捆绑包是系统特定的;它实现了各种系统服务。
捆绑清单版本 = 2
捆绑名称 = 系统捆绑
Bundle-SymbolicName = org.apache.felix.framework
捆绑版本 = 4.1.0.SNAPSHOT
导出包 = org.osgi.framework; 版本=“1.6.0”,org.osgi.framework.launch;版本="1.0.0", org.osgi.framework.wiring; 版本="1.0.0", org.osgi.framework.startlevel; 版本=“1.0.0”,org.osgi.framework.hooks.bundle;版本=“1.0.0”,org.osgi.framework.hooks.resolver;版本=“1.0.0”,org.osgi.framework.hooks.service;版本=“1.1.0”,org.osgi.framework.hooks.weaving;版本=“1.0.0”,org.osgi.service.packageadmin;版本="1.2.0", org.osgi.service.startlevel; 版本=“1.1.0”,org.osgi.service.url;版本=“1.0.0”,org.osgi.util.tracker;版本="1.5.0"
导出服务 = org.osgi.service.packageadmin.PackageAdmin,org.osgi.service.startlevel.StartLevel,org.osgi.service.url.URLHandlers
提供能力 =
这与普通系统捆绑包的系统捆绑包导出没什么不同;-) 我不知道它是否起作用:我正在像这样启动 Felix:
Properties configArg = new Properties();
File chacheDir = this.getFilesDir();
configArg.setProperty(Constants.FRAMEWORK_STORAGE, chacheDir.getAbsolutePath());
configArg.setProperty("osgi.shell.telnet.ip", ipadd);
configArg.setProperty("osgi.shell.telnet.port", "6666");
Felix felix = new Felix(configArg);
try{
felix.start();
...
现在的问题是,我如何在系统包中获取缺少的标准 java 包。