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

str*_*str 22 qt licensing ios

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

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

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

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

任何建议都非常感谢.

提前致谢.

psy*_*hed 52

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可以实现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

  • 这里提供的答案绝对是顶尖的.你是如何对这个话题变得如此知识渊博的?辉煌! (2认同)
  • @Sparr 你甚至可以在没有 Apple ID 的情况下使用 Apple Store 吗? (2认同)

Mig*_*ons 5

是的,这是可能的。

您可以使用此 Qt 应用模板:

https://marketplace.qt.io/products/qt-lgpl-app-template

在 IOS 上不可能重新链接应用程序,因此它不兼容 LGPL V3.0(用户不能替换 Qt 库)

但是这个模板在每次重建时都会生成一个可再发行的 .zip Qt 项目。

他们的整个私人项目分布在一个编译好的 .a 库中,因此用户可以在 Qt Creator 中打开项目,重建他们的应用程序并将其加载到他们的 ipad / iphone 上,并且您的源代码受到保护

注意:如果您使用的是 qtquick 编译器,则必须将其重新链接到相同版本的 Qt。

此 .zip 文件可以上传到您自己的 URL,也可以将其添加到您的软件资源中。

您可以在 Android 应用、静态 Windows 应用等中使用相同的模板。

@psyched 所说的相同,但 100% 是自动的。