Android应用程序和开源库

时间:2011-08-02 06:10:13

标签: android c++ stl licensing

我有一个基于c ++的现有应用程序(未发布公共但只是内部),我想将其移植到Android并在我的Android应用程序中使用其服务。我在那个应用程序中使用STL和boost。

我的问题是,如果我想将现有代码移植到android,我可以将它们编译为静态或共享对象。

我计划使用Android NDK将原生c ++代码移植到android作为库,并在我的Android应用程序中使用它,这是在Java中

但是因为我也使用开源库,如果我在我的Android应用程序的代码中使用它们,我是否应该发布我的库的源代码?

我不明白这些许可证在将其作为公共应用程序发布时通常如何工作。我想如果我把它编译为共享库,我想我应该没事,但我认为在应用程序上传时会出现一些问题?(或者不是?)

其次,如果我将它们编译为静态库,那么我想我需要释放我的源对象文件?

我发布我的资料并不是很舒服,我该如何有效地做到这一点?我应该采用哪条路径(共享/静态对象),或者它甚至不重要因为无论如何应用程序只是一个安装程序,它应该可以在任何手机上正常工作?如果我这样做会有任何开源违规问题吗?

由于

2 个答案:

答案 0 :(得分:1)

首先必须学习Java ...并找出没有STL和提升库。

Java生态系统拥有自己的开源库,可以用来提高工作效率。将它们包含在您的应用程序中就像在正确的文件夹中复制一组.jar文件并将它们添加到构建路径中。

关于许可,大多数问题都来自GPL许可库。 GPL许可证要求使用GPL组件生成的任何应用程序也应使用GPL(着名的“传染性”许可证)进行开源和许可。

无论如何,GPL很少用于图书馆,因为这个完整的开源要求会限制它们的采用。有一个名为LGPL的派生GPL许可证,不要求您的应用程序是开源的。

尽管如此,图书馆通常会在更宽松的许可下分发,而且大部分时间都不会将它们包含在您的应用中。

答案 1 :(得分:0)

你应该更好地格式化你的问题吗?如果您在现有应用程序中使用开源库,则在使用Android构建应用程序时也适用相同的规则。

正如海报所提到的,不要将C ++库与Android开发所需的Java库混淆。只需使用它的SDK使用Android,如果您正在寻找Android世界中的开源库,那就有list here