App Store 并不关心您使用的许可证。关心的是您的应用程序的用户和库的作者。 LGPLv3 许可证的要点是最终用户必须有可能用他们自己的修改版本替换库。理解这一点非常重要,动态/静态/其他一切都会分散注意力。
让我们转到 Qt。它适用于主要桌面(Windows、OSX、Linux)和移动(iOS、Android)操作系统的 LGPLv3 许可证。假设您开发了一个应用程序并希望保持源代码关闭。在桌面上,您可以动态链接到 Qt 库。当最终用户安装您的应用程序时,他们可以通过以下方式替换 Qt 库:
- 编译自己的 Qt 库版本
- 导航到安装应用程序的位置
- 用自己的修改版本替换随您的应用程序提供的原始 Qt 库
看起来很简单,对吧?实现了 LGPLv3 的主要目标。用户可以替换库。
转向移动平台,从 Android 开始。即使您动态链接到 Qt 库,我们现在也遇到了一个小问题。用户无法导航到C:/Program Files/YourApp 并替换 Qt 库,因为它是 Android。生根不是一种选择,因为它不适用于所有设备(并且可能不合法)。请记住,LGPLv3 的主要目标是让用户能够替换库并在他们的设备上运行修改后的应用程序版本。
解决方案?向每个安装了您的应用程序的用户提供 .apk 文件,并详细说明如何:
- 解压您的 .apk 文件
- 替换 Qt 库
- Zipalign / pack / signtool 到一个新的 .apk
- 使用修改后的 Qt 库安装 .apk
让我们谈谈 iOS。许多人说由于静态链接,不可能在 iOS 上使用 LGPLv3。错误的。同样,您只需要为最终用户提供替换 Qt 库的可能性。如何?提供您的目标文件以供最终用户重新链接。或者更好的是,将所有应用程序代码和资源放在一个单独的 Qt Quick 插件中,该插件将在 iOS 的静态库存档(技术上只是连接在一起的所有目标文件)中编译。然后,对于安装了您的应用程序的每个用户,您必须提供有关如何替换 Qt 库的说明:
- 从您的网站下载项目文件和目标文件
- 从 Apple 网站下载 XCode 和开发者工具
- 替换 Qt 库
- 将应用程序部署到您的设备
在此之前这是不可能的,因为为了在设备上进行部署,用户必须注册 Apple Developer Program。但现在情况不再如此。 You can launch your app on a device using a free Apple ID account
最终用户的权利受到保护。它们可以替换 Qt 库。只需确保您执行了必要的步骤:
- 在您的应用程序中提及您使用 Qt 库并提及您在 LGPLv3 许可下使用它们。提供指向 LGPLv3 lincese 的链接。
- 确保替换 Qt 库的设置有效。设置一个干净的虚拟机,一步一步做所有的事情。为最终用户记录下来。
- 当下载您的应用程序的用户想要替换 Qt 库时,请为他们提供一切,以便他们能够做到。
实际上,我认为没有人会在意。但你必须做好准备以防万一。不要尖叫你在 Qt 论坛上使用 Qt LGPLv3,但要确保它在应用程序的“关于”屏幕中的某个地方可见。 Qt 公司没有资源来扫描 App Store 中的每个应用程序,无论它是否使用 Qt。如果你是一个几乎零利润的小公司,他们也不会碰你。他们有更重要的事情要做。
然而,看到在 Qt 中工作的人对 LGPL 主题完全没有帮助,这非常令人失望。很可能所有开发人员都被指示回答“IANAL,请联系我们的法律部门”。法律部门会告诉你——购买我们的商业许可证,这是唯一的选择。在 Qt 网站上,您可以找到 Obligations of the LGPL。我并不感到惊讶,没有关于静态链接和提供目标文件以在此页面上重新链接的消息。 Qt 公司只是不想告诉任何人这是可能的。
从我的角度来看,LGPL 是一个巨大的进步,它使许多应用程序能够在不公开其源代码的情况下使用 Qt,从而为 Qt 带来了巨大的人气。更不用说诺基亚是首先赞助 Qt on Mobile(Symbian 和 MeeGo)的公司。
同样考虑 MeeGo 和 Blackberry,开发使用 Qt 的闭源移动应用程序并在各自的应用程序商店中发布它们没有问题。无需商业许可。
更新:
以前已经这样做过。 LGPL 可以通过静态链接和 App Store 实现。 https://news.ycombinator.com/item?id=4302517
如果问题被关闭为题外话,我在这里复制了答案
https://opensource.stackexchange.com/questions/6463/in-2018-if-i-use-c-qt-5-10-0-to-build-a-closed-source-application-requires-ope/6495#6495