Knoflerfish в Android - запуск комплекта не удался

Я следую этому руководству, чтобы встроить OSGi в свое приложение для Android. Однако после установки и запуска пакета его состояние стало РАЗРЕШЕНО (4), а не АКТИВНО (32), как должно быть. Когда я пытаюсь начать еще раз, выдается исключение:

Bundle#1 start failed
java.lang.ClassNotFoundException: org.knopflerfish.tutorial.simplebundle.impl.Activator
org.knopflerfish.framework.BundleImpl.start0(BundleImpl.java:421)
org.knopflerfish.framework.BundleThread.run(BundleThread.java:145)

Этот пакет является примером пакета из источника примеров Knopflerfish. Хорошо работает при установке в Knopflerfish destop (framework.jar)

Я уже думал о dex, но бесполезно объединять файл jar и его файл dex, он все еще не работает.

В чем здесь проблема? Большое спасибо!

1 ответ

Решение

Через несколько дней я нашел решение этой проблемы. Я публикую это здесь для тех, кто может беспокоиться.

Прежде всего, эта проблема связана с файлом dex. Файл dex не может быть найден, поэтому BundleClassLoader не может найти класс Activator. В файле jar после выполнения команд dx и aapt *.dex должен находиться в верхнем пути. Вы можете проверить это, распаковав jar-файл и посмотрите.

bundler.jar
----META-INF
----org
----classes.dex

Еще один момент, который нужно учитывать, если ваше приложение все еще не работает. В более новой версии Android файл dex не может быть расположен во внешнем хранилище (как описано здесь http://developer.android.com/reference/dalvik/system/DexClassLoader.html), поэтому вам нужно изменить код, который устанавливает org.osgi.framework.storage имущество.

Вместо:

Map<String, String> fwprops = new Hashtable<String, String>();
fwprops.put("org.osgi.framework.storage", Environment.getExternalStorageDirectory().getAbsolutePath() + "/fwdir");

Я использую это:

Map<String, String> fwprops = new Hashtable<String, String>();
File dexOutputDir = getDir("dex", 0);
fwprops.put("org.osgi.framework.storage", dexOutputDir.getAbsolutePath());

Надеюсь, это поможет.

Другие вопросы по тегам