App Store是否接受与QT Library LGPLv3链接的Qt应用程序

有任何方法可以向App Store提交Qt Quick Controls应用程序

根据LGPLv3许可证而不违反App Store规则?

我想要做的是使用动态链接版本的Qt库在iOS商店上部署我的应用程序。

我试图在每个论坛找到答案,但似乎很难。

任何建议都非常感谢。

提前致谢。

App Store不关心您使用的许可证。 它是您的应用程序的用户和图书馆作者关心的。 LGPLv3许可证的要点是最终用户必须能够用自己的修改版本替换库。 理解这一点非常重要,动态/静态/其他一​​切只会分散注意力。

让我们转到Qt。 它可在主要桌面(Windows,OSX,Linux)和移动(iOS,Android)操作系统上使用LGPLv3许可证。 假设您开发了一个应用程序并希望保持源代码关闭。 在桌面上,您可以动态链接到Qt库。 当最终用户安装您的应用程序时,他们可以通过以下方式替换Qt库:

  1. 编译自己的Qt库版本
  2. 导航安装应用程序的位置
  3. 使用自己的修改版本替换随您的应用程序一起提供的原始Qt图书馆

看起来很简单吧? 实现了LGPLv3的主要目标。 用户可以替换库。

从Android开始,转移到移动平台。 即使您动态链接到Qt库,我们现在遇到一个小问题。 用户无法导航到C:/Program Files/YourApp并替换Qt库,因为它是Android。 生根不是一种选择,因为它不适用于每个设备(并且可能不合法)。 请记住,LGPLv3的主要目标是让用户能够替换库并在其设备上运行应用程序的修改版本。

解? 将.apk文件提供给安装了您的应用程序的每个用户,并提供有关如何:

  1. 解压缩.apk文件
  2. 替换Qt库
  3. Zipalign / pack / signtool到一个新的.apk
  4. 使用修改过的Qt库安装.apk

我们来谈谈iOS。 许多人说由于静态链接,不可能在iOS上使用LGPLv3。 错误。 同样,您只需要为最终用户提供替换Qt库的可能性。 怎么样? 提供最终用户重新链接的目标文件。 或者甚至更好,将所有应用程序代码和资源放在一个单独的Qt Quick插件中,该插件将在静态库归档中编译(技术上只是连接在一起的所有目标文件)。 然后,对于安装应用程序的每个用户,您必须提供有关如何替换Qt库的说明:

  1. 从您的网站下载项目文件和目标文件
  2. 从Apple网站下载XCode和开发人员工具
  3. 替换Qt库
  4. 将应用程序部署到您的设备

在此之前不可能,因为为了在设备上部署,用户必须注册Apple Developer Program。 但事实并非如此。 您可以使用免费的Apple ID帐户在设备上启动应用

最终用户权限受到保护。 他们可以取代Qt库。 只需确保您执行所需的步骤:

  1. 在您的应用程序中提到您使用Qt库,并提及您在LGPLv3许可下使用它们。 提供LGPLv3 lincese的链接。
  2. 确保更换Qt库的设置有效。 设置一个干净的虚拟机,一步一步地完成所有工作。 为最终用户记录。
  3. 当下载您的应用程序的用户想要替换Qt库时,请提供所有内容,以便他们可以执行此操作。

其实我觉得没有人会在乎。 但你必须做好准备以防万一。 不要尖叫你在Qt论坛上使用Qt LGPLv3,但要确保你在应用程序的“关于”屏幕中显示它。 如果Qt公司使用Qt,它没有资源从App Store扫描每个应用程序。 如果你是一个接近于零的小利润,他们也不会碰你。 他们有更重要的事情要做。

然而,在QPL上就LGPL主题工作的人完全没有帮助,这是非常令人失望的。 很可能所有开发人员都被要求回答“IANAL,请联系我们的法律部门”。 法律部门会告诉你 – 购买我们的商业许可证,这是唯一的选择。 在Qt网站上,您可以找到LGPL的义务 。 我并不感到惊讶,没有关于静态链接和提供目标文件的信息,以便在此页面上重新链接。 Qt公司只是不愿意告诉任何人这是可能的。

从我的观点来看,LGPL是一个巨大的进步,它使许多应用程序能够使用Qt而不会泄露他们的源代码,从而为Qt带来了巨大的人气。 更不用说诺基亚是第一个赞助移动Qt的人(Symbian然后是MeeGo)。

考虑到MeeGo和Blackberry,开发使用Qt并在各自的app store中发布它们的封闭源移动应用程序也没有问题。 无需商业许可证。

更新 :此前已经完成。 使用静态链接和App Store可以实现LGPL。 https://news.ycombinator.com/item?id=4302517

如果问题因为偏离主题而被关闭,我在这里复制了答案https://opensource.stackexchange.com/questions/6463/in-2018-if-i-use-c-qt-5-10-0-到集结一个封闭-源应用需要-OPE / 6495#6495