OSGi バンドルとして小さな EMF プロジェクトを開発しました。今、Apache Felix を使用して Android で使用したいと思います。EMF は、いくつかの標準 Java ライブラリを使用します。java.xml.xxx と同様です。通常、OSGi システム バンドルはこれらをエクスポートします。しかし、私のアンドロイドの場合、次のようになります。
システムバンドル (0)
Bundle-Description = このバンドルはシステム固有です。さまざまなシステム サービスを実装します。
バンドル マニフェスト バージョン = 2
Bundle-Name = システム バンドル
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; version="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 パッケージをどのように取得するかです。