【问题标题】:Does App Store accept Qt app linked with QT Library LGPLv3App Store 是否接受与 QT 库 LGPLv3 链接的 Qt 应用程序
【发布时间】:2016-05-06 05:11:23
【问题描述】:

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

在 LGPLv3 许可下不违反 App Store 规则?

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

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

非常感谢任何建议。

提前致谢。

【问题讨论】:

  • 无论如何,你都不能为 iOS 动态编译 Qt,直到 codereview.qt-project.org/#/c/123023 被合并——我们说的是 Qt 5.8 时间框架,即 2016 年 12 月。
  • 所以,换句话说,在商店中提交应用程序的唯一方法是静态链接 Qt(并购买商业许可证)?
  • 是的。这也是为什么(截至 2016 年 1 月)a cheaper license scheme is coming (for startups)。另一种方法是使您的应用程序也成为 LGPLv2 / v3(假设一般来说,LGPL 与 Apple Store 兼容。我听说过有人说 Apple Store 政策与免费软件不兼容。IANAL)。或者帮助合并该补丁,然后使用 Qt 的开发版本 :-)
  • 清除。感谢您的帮助!

标签: ios qt licensing


【解决方案1】:

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 插件中,该插件将在 iOS 的静态库存档(技术上只是连接在一起的所有目标文件)中编译。然后,对于安装了您的应用程序的每个用户,您必须提供有关如何替换 Qt 库的说明:

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

在此之前这是不可能的,因为为了在设备上进行部署,用户必须注册 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 库时,请为他们提供一切,以便他们能够做到。

实际上,我认为没有人会在意。但你必须做好准备以防万一。不要尖叫你在 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

【讨论】:

  • 这里提供的答案绝对是一流的。你是如何对这个话题如此了解的?太棒了!
  • 太棒了,我希望我能给这个答案100票
  • @psyched,读完这篇文章后,我脑海中只剩下一个问题。我的应用程序是 100% 开源的,我在其中使用 Qt 和 Ethereum 库,都是 GPL,我可以在 Apple Store 中分发它吗?用户可以下载我的源代码和说明,并自行重建所有内容,那么,我是否必须提供有关如何在 Apple 商店中为我的二进制发行版替换 Qt 的说明?如果我已经把它全部开源了,我认为这没有任何意义。
  • 并非每个人都有资格获得 Apple ID 帐户。这是否意味着此解决方案无效?
  • @pooya13 我今天可以使用苹果 id 下载应用,然后丢失我的苹果 id,然后需要苹果 id 来启动替换了 qt 库的应用版本。
【解决方案2】:

是的,这是可能的。

您可以使用这个 Qt 应用程序模板:

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

在 IOS 上无法重新链接 App,因此与 LGPL V3.0 不兼容(用户无法替换 Qt 库)

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

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

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

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

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

@psyched says 相同,但 100% 自动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-19
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    相关资源
    最近更新 更多