Я фактически работаю над OSGi на Android, и я близок к достижению своей цели, но есть одна небольшая проблема.
Рамка (Apache Felix) работает успешно. Проблема возникает из Bundles, которые хотят получить контекст приложения. Я просто не могу их использовать, потому что во время выполнения у меня есть красивый "Не могу найти closse Android.content.Context", оговоренный с [...]. (И затем при попытке получить ServiceReference придет NoClassDefFoundError)
Я связал Android.jar с Bundle, но, похоже, этого недостаточно (даже если компиляция в порядке). Может быть, так, как я создаю пакет, что неправильно, я просто экспортирую его как .jar, когда закончил.
Итак, если у вас есть несколько советов о том, как решить эту проблему, они приветствуются;)
Спасибо!
Хорошо, я, наконец, закончил с этим. Я действительно дурак.
В Manifest.mf, раздел "Импорт-Пакет", не забудьте добавить android.content
Теперь он отлично работает;)
Android.content.Context
частью Android API? Похоже, это должно быть выставлено как экспорт системного пакета. Вы можете сделать это, добавивAndroid.content
в свойствоorg.osgi.framework.system.packages.extra
.configMap.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA, "android.content");
Затем в Активаторе я регистрирую текущий контекст следующим образом:this.m_context.registerService(Context.class.getName(), appContext, null);
Наконец, я пытаюсь получить соответствующую ServiceReference следующим образом:ServiceReference ref = context.getServiceReference(Context.class.getName());
но он выдает «NoClassDefFoundError» во время выполнения для этой строки.