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

时间:2016-01-28 17:28:43

标签: ios qt licensing

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

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

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

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

非常感谢任何建议。

提前致谢。

2 个答案:

答案 0 :(得分:44)

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

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

  1. 编译自己的Qt库版本
  2. 导航应用程序的安装位置
  3. 用您自己的修改版本替换您的应用程序附带的原始Qt图书馆
  4. 看起来很简单吧?实现了LGPLv3的主要目标。用户可以替换库。

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

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

    的详细说明
    1. 解压缩.apk文件
    2. 替换Qt库
    3. Zipalign / pack / signtool to a new .apk
    4. 使用修改过的Qt库安装.apk
    5. 让我们来谈谈iOS。许多人说由于静态链接,不可能在iOS上使用LGPLv3。错误。同样,您只需要为最终用户提供替换Qt库的可能性。怎么样?提供目标文件供最终用户重新链接。或者甚至更好,将所有应用程序代码和资源放在一个单独的Qt Quick插件中,该插件将在静态库存档(技术上只是连接在一起的所有目标文件)中进行编译。然后,对于安装应用程序的每个用户,您必须提供有关如何替换Qt库的说明:

      1. 从您的网站下载项目文件和目标文件
      2. 从Apple网站下载XCode和开发人员工具
      3. 替换Qt库
      4. 将应用程序部署到您的设备
      5. 在此之前无法实现,因为为了在设备上部署,用户必须注册Apple Developer Program。但事实并非如此。 You can launch your app on a device using a free Apple ID account

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

        1. 在您的应用程序中提及您使用Qt库,并提及您在LGPLv3许可下使用它们。提供LGPLv3 lincese的链接。
        2. 确保更换Qt库的设置有效。设置一个干净的虚拟机,一步一步地完成所有工作。为最终用户记录。
        3. 当下载您的应用程序的用户想要替换Qt库时,请提供所有内容,以便他们可以执行此操作。
        4. 实际上我认为没有人会关心。但你必须做好准备以防万一。不要尖叫你在Qt论坛上使用Qt LGPLv3,但要确保你在应用程序的某个地方可以看到它"关于"屏幕。如果Qt公司使用Qt,它没有资源从App Store扫描每个应用程序。如果你的利润微乎其微,他们也不会碰你。他们有更重要的事情要做。

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

          从我的观点来看,LGPL是一个巨大的进步,它使许多应用程序能够使用Qt而不会泄露他们的源代码,从而为Qt带来了巨大的人气。更不用说诺基亚首先赞助Qt on Mobile(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-to-build-a-closed-source-application-requires-ope/6495#6495

答案 1 :(得分:1)

是的,有可能。

您可以使用以下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 says相同,但会自动100%