我想开发一个支持动态加载和卸载包的Android应用程序。因此,我正在考虑使用OSGI实现框架。
我最好的 OSGI 实现选择是什么?
最好的情况是,我谈论的是文档(资源的可用性)、与 Android API 的兼容性以及对在 Android 应用程序中嵌入 OSGI 的支持。
在搜索时,我发现了两个似乎不错的实现:
1- Apache Felix
2- Knopflerfish
有什么建议吗?谢谢。
最佳答案
两者都适用于 Android。就像 Balazs 在评论中指出的那样,Dalvik 和 JVM 之间存在相当多的细微差别,其中一些在执行 OSGi 风格的代码动态加载时确实会造成困扰。根据内存,您还必须担心无法两次加载同一个类(即使它们私有(private)地打包在不同的包中)。但是,由于您可能是从头开始设计应用程序,因此您可能可以解决此类问题。
您还可以在这里找到一些信息:OSGi container for Android
但一个棘手的方面是,Android 也是一个不断变化的目标。 Android 的第一个版本没有公开让 Felix 运行所需的类加载器方法,因此我们必须进行一些逆向工程。不过,很难预测 Android 的 future 版本会带来什么。事情可能会破裂。您要选择自己的 Android 版本并将其部署到您的目标设备上,还是代码需要在现有设备上运行?
关于android - Android 实现 OSGI 的最佳选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17954781/