在付费Android应用中使用LGPL库

我可以在我的付费Android应用程序中使用LGPL库吗? 我不打算修改LGPL库,我只是想使用它。 这是合法吗?

    我一直认为LGPL非常“灰色地带”。 虽然有关于如何使用LGPL代码/库等的具体细节,但并不一定反映作者的确切要求。

    我个人build议联系作者,解释您的疑虑,并询问他们是否乐意让您使用它。

    如果您正在制作付费Android应用程序,则可能会遇到LGPL特定问题的问题:可替代性。 一般来说,它指出,当你分发一个组合的工作,你必须提供一个用户有可能用一个不同的版本(例如更新)replace库。 在前面的评论中提到的DEX文件的情况非常令人怀疑。

    单个DEX文件的替代scheme是从一个从属库制作一个单独的应用程序,在LGPL上发布。 在这样的应用程序中,您创build了一个从付费应用程序连接到的服务。 然后,为了用新版本replaceLGPL库,只需要重新编译并重新安装库的APK。

    麻烦的是,当然,现在你有多个APK安装。

    在Android免费或付费应用中使用LGPL是合法的,但要符合LGPL,您必须:

    1. 给用户指示使用的库以及在哪里可以find原始代码;
    2. configurationproguard 不会混淆LGPL涵盖的代码;
    3. 避免在应用程序中检查签名符合性;
    4. 向用户提供如何replace库的指示。

    对于第4点,您可以指示使用dex2jar,replaceLGPL代码并重新签名APK。 它需要用户做很多工作,但是可以这样做,并允许最终用户按照LGPL的说法重新组合或重新链接代码。 另外,如果你的应用程序使用任何谷歌服务,用户需要创build一个帐户来生成自己的API密钥等等。

    我不是律师,但是从我对GNU宽通用公共许可证3.0的理解中, 第4节明确地排除了静态链接的要求:

    您可以根据您select的条款传送组合作品,这些作品合在一起不会限制修改组合作品中包含的库的某些部分,也不会限制修改此类修改的逆向工程, 如果您还执行以下各项操作

    • […]
    • d)执行以下操作之一:

      • 0)根据本许可协议条款和相应的应用代码,以适当的forms传递最小对应源代码,并允许用户将应用程序与链接版本的修改版本重新组合或重新链接,以生成修改组合工作,按照GNU GPL第6节规定的方式传输相应的源文件。
      • 1)使用合适的共享库机制来链接库。 (a)在运行时使用用户计算机系统上已经存在的库的副本,并且(b)将以与链接版本接口兼容的库的修改版本正确操作。

    (强调我的)

    根据Android APK的性质,部分4d.0是不可能的:APK编译为Dex并作为整体进行签名,包含引用的库,因此,如果没有原始源代码,密钥库和密钥库密码,则无法完成对库的交换。

    部分4d.1 可以通过部署两个APK来实现:

    • 一个APK包含LGPL库,反过来开源和LGPL许可
    • 另一个专有的APK引用LGPL应用程序。

    但是,通过Google Play直接部署这样的应用程序是不可能的,因为不需要特别添加用户继续下载LGPL依赖项的需求,这需要在Google Play上作为单独的应用程序进行部署。 这对于最终用户来说是非常单调乏味的,而对于典型的消费者应用来说,实际上并不是一种select。

    根据与William Tate教授的Falken教授的讨论,LGPL的条款可能更适用于通过本地代码包含的C库,因为它们作为单独的库驻留在APK中。 虽然APK无法签名,但可以用replace的目标文件重新打包APK。 从我的angular度来看,这在技术上符合许可证的要求。

    droidText库(用于在Android上导出为PDF格式并在LGPL下发布)详细说明了如何使用它们的库并仍然符合LGPL:

    http://code.google.com/p/droidtext/wiki/LGPLCompliance

    我发现它非常有帮助。 基本上你使用了一个utililty(dex2jar)把dex文件库中的jar放到了dex文件中,这样就允许和最终用户使用更新版本的droidText库进行更新(如果他们愿意的话)。

    这应该概述您的主要问题: http : //answers.google.com/answers/threadview/id/439136.html

    它似乎大部分都是披露你对图书馆的使用,并确保你遵守许可证的分配规则。