我有一个基于c ++的现有应用程序(未发布公共但只是内部),我想将其移植到Android并在我的Android应用程序中使用其服务。我在那个应用程序中使用STL和boost。
我的问题是,如果我想将现有代码移植到android,我可以将它们编译为静态或共享对象。
我计划使用Android NDK将原生c ++代码移植到android作为库,并在我的Android应用程序中使用它,这是在Java中
但是因为我也使用开源库,如果我在我的Android应用程序的代码中使用它们,我是否应该发布我的库的源代码?
我不明白这些许可证在将其作为公共应用程序发布时通常如何工作。我想如果我把它编译为共享库,我想我应该没事,但我认为在应用程序上传时会出现一些问题?(或者不是?)
其次,如果我将它们编译为静态库,那么我想我需要释放我的源对象文件?
我发布我的资料并不是很舒服,我该如何有效地做到这一点?我应该采用哪条路径(共享/静态对象),或者它甚至不重要因为无论如何应用程序只是一个安装程序,它应该可以在任何手机上正常工作?如果我这样做会有任何开源违规问题吗?
由于
答案 0 :(得分:1)
首先必须学习Java ...并找出没有STL和提升库。
Java生态系统拥有自己的开源库,可以用来提高工作效率。将它们包含在您的应用程序中就像在正确的文件夹中复制一组.jar文件并将它们添加到构建路径中。
关于许可,大多数问题都来自GPL许可库。 GPL许可证要求使用GPL组件生成的任何应用程序也应使用GPL(着名的“传染性”许可证)进行开源和许可。
无论如何,GPL很少用于图书馆,因为这个完整的开源要求会限制它们的采用。有一个名为LGPL的派生GPL许可证,不要求您的应用程序是开源的。
尽管如此,图书馆通常会在更宽松的许可下分发,而且大部分时间都不会将它们包含在您的应用中。
答案 1 :(得分:0)
你应该更好地格式化你的问题吗?如果您在现有应用程序中使用开源库,则在使用Android构建应用程序时也适用相同的规则。
正如海报所提到的,不要将C ++库与Android开发所需的Java库混淆。只需使用它的SDK使用Android,如果您正在寻找Android世界中的开源库,那就有list here。