2013-07-30 2 views
2

Я хочу разработать приложение для Android, которое поддерживает динамическую загрузку и разгрузку пакетов. Поэтому я рассматриваю возможность использования основы реализации OSGI.Лучший выбор для реализации OSGI с Android

Каким будет мой лучший выбор реализации OSGI?

В лучшем случае речь идет о документации (доступность ресурсов), совместимости с Android API и поддержке внедрения OSGI в Android-приложении.

При поиске, я нашел две реализации, которые, кажется, чтобы быть хорошим:

1- Apache Felix

2- Knopflerfish

Любые предложения? Благодарю.

+0

Я читал слухи, что Knopflerfish работал на Android один раз. Однако для меня это вопрос, если он вообще может работать. В Dalvik VM одно приложение может иметь 65535 методов (возможно, оно было изменено в последних версиях). Если вы начнете использовать много пакетов в одном приложении, вы быстро достигнете этого номера. Через год или что-то, что я хотел бы потратить некоторое время на этот вопрос, но я думаю, что я проверю, могу ли я запустить контейнер OSGi на Avian VM (который может быть скомпилирован для Android-Linux) –

ответ

3

Оба работают на Android. Как отметил Балазс в комментарии, существует немало тонких различий между Dalvik и JVM, и некоторые из них укусят вас, когда делают OSGi динамическую загрузку кода. Из памяти вам также придется беспокоиться о невозможности загрузить один и тот же класс дважды (даже если они приватно упакованы в разные пакеты). Однако, поскольку вы, вероятно, разрабатываете приложение с нуля, вы, вероятно, можете обойти такие проблемы.

Вы также найдете информацию здесь: OSGi container for Android

Один хитрый аспект, хотя в том, что Android также немного движущейся цели. В первой версии Android не было обнаружено методов загрузчика классов, и нам нужно было запустить Felix, поэтому нам пришлось сделать немного обратной инженерии. Трудно предсказать, какие будущие версии Android принесут. Все может сломаться. Вы собираетесь выбрать свою версию Android и развернуть ее на устройства, на которые вы нацелились, или нужен ли код для работы на существующих устройствах?

Смежные вопросы