App Store 是否接受与 QT 库 LGPLv3 链接的 Qt 应用程序
Does App Store accept Qt app linked with QT Library LGPLv3
可以通过任何方式向 App Store 提交 Qt Quick Controls 应用程序
在 LGPLv3 许可下且不违反 App Store 规则?
我想做的是使用 Qt 库的动态链接版本将我的应用程序部署到 iOS 商店。
我试图在每个论坛中找到答案,但似乎很难。
非常感谢任何建议。
提前致谢。
App Store 不关心您使用哪个许可证。关心的是您的应用程序的用户和库的作者。 LGPLv3 许可证的要点是最终用户必须有可能用自己的修改版本替换库。理解这一点非常重要,动态/静态/其他一切都只会让人分心。
让我们转向 Qt。它可在主要桌面(Windows、OSX、Linux)和移动(iOS、Android)操作系统上使用 LGPLv3 许可证。假设您开发了一个应用程序并希望关闭源代码。在桌面上,您可以 link 动态地访问 Qt 库。当最终用户安装您的应用程序时,他们可以通过以下方式替换 Qt 库:
- 编译自己版本的Qt库
- 浏览应用程序的安装位置
- 用自己的修改版本替换应用程序附带的原始 Qt 库
看起来很简单,对吧? LGPLv3 的主要目标已经实现。用户可以替换库。
移动到移动平台,从 Android 开始。即使您 link 动态地访问 Qt 库,我们现在也有一个小问题。用户无法导航到 C:/Program Files/YourApp
并替换 Qt 库,因为它是 Android。生根不是一种选择,因为它不适用于所有设备(并且可能不合法)。请记住,LGPLv3 的主要目标是让用户能够在他们的设备上替换库和 运行 应用程序的修改版本。
解决方案?向安装您的应用程序的每位用户提供 .apk 文件,并提供有关如何执行以下操作的详细说明:
- 解压您的 .apk 文件
- 替换 Qt 库
- Zipalign / pack / signtool 到新的 .apk
- 使用修改后的 Qt 库安装 .apk
我们来谈谈iOS。许多人说不可能将 LGPLv3 与 iOS 一起使用,因为静态 linking。错误的。同样,您只需要为最终用户提供替换 Qt 库的可能性。如何?为最终用户提供您的目标文件以重新link。或者更好的是,将所有应用程序代码和资源放在一个单独的 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 提供 link。
- 确保替换 Qt 库的设置有效。设置一个干净的虚拟机,一步一步做所有的事情。为最终用户记录下来。
- 当下载了您的应用程序的用户想要替换 Qt 库时,请为他们提供一切,以便他们可以做到。
其实我觉得没有人会在意。但是你必须做好准备以防万一。不要在 Qt 论坛上尖叫您使用 Qt LGPLv3,但要确保它在应用程序的 "About" 屏幕下方某处可见。无论是否使用 Qt,Qt 公司都没有资源从 App Store 扫描每个应用程序。如果你是一个几乎零利润的小公司,他们也不会碰你。他们还有更重要的事情要做。
然而,看到在 LGPL 主题上使用 Qt 的人完全没有提供任何帮助,这是非常令人失望的。很可能所有开发人员都被指示回答 "IANAL, please contact our legal department"。法律部门会告诉你 - 购买我们的商业许可证,这是唯一的选择。在 Qt 网站上,您可以找到 Obligations of the LGPL。我并不感到惊讶,此页面上没有关于静态 linking 和提供目标文件 以重新 link 的字样。 Qt 公司只是不想告诉任何人这是可能的。
在我看来,LGPL 是一个巨大的进步,它使许多应用程序能够在不公开其源代码的情况下使用 Qt,从而为 Qt 带来了巨大的普及。更不用说诺基亚是第一个在移动设备上赞助 Qt 的人(Symbian,然后是 MeeGo)。
同时考虑 MeeGo 和黑莓,开发使用 Qt 的闭源移动应用程序并在各自的应用程序商店中发布它们没有问题。无需商业许可。
更新:
这是以前做过的。 LGPL 可以通过静态 linking 和 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
是的,有可能。
您可以使用此 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 应用等中使用相同的模板。
与相同,但 100% 自动。
可以通过任何方式向 App Store 提交 Qt Quick Controls 应用程序
在 LGPLv3 许可下且不违反 App Store 规则?
我想做的是使用 Qt 库的动态链接版本将我的应用程序部署到 iOS 商店。
我试图在每个论坛中找到答案,但似乎很难。
非常感谢任何建议。
提前致谢。
App Store 不关心您使用哪个许可证。关心的是您的应用程序的用户和库的作者。 LGPLv3 许可证的要点是最终用户必须有可能用自己的修改版本替换库。理解这一点非常重要,动态/静态/其他一切都只会让人分心。
让我们转向 Qt。它可在主要桌面(Windows、OSX、Linux)和移动(iOS、Android)操作系统上使用 LGPLv3 许可证。假设您开发了一个应用程序并希望关闭源代码。在桌面上,您可以 link 动态地访问 Qt 库。当最终用户安装您的应用程序时,他们可以通过以下方式替换 Qt 库:
- 编译自己版本的Qt库
- 浏览应用程序的安装位置
- 用自己的修改版本替换应用程序附带的原始 Qt 库
看起来很简单,对吧? LGPLv3 的主要目标已经实现。用户可以替换库。
移动到移动平台,从 Android 开始。即使您 link 动态地访问 Qt 库,我们现在也有一个小问题。用户无法导航到 C:/Program Files/YourApp
并替换 Qt 库,因为它是 Android。生根不是一种选择,因为它不适用于所有设备(并且可能不合法)。请记住,LGPLv3 的主要目标是让用户能够在他们的设备上替换库和 运行 应用程序的修改版本。
解决方案?向安装您的应用程序的每位用户提供 .apk 文件,并提供有关如何执行以下操作的详细说明:
- 解压您的 .apk 文件
- 替换 Qt 库
- Zipalign / pack / signtool 到新的 .apk
- 使用修改后的 Qt 库安装 .apk
我们来谈谈iOS。许多人说不可能将 LGPLv3 与 iOS 一起使用,因为静态 linking。错误的。同样,您只需要为最终用户提供替换 Qt 库的可能性。如何?为最终用户提供您的目标文件以重新link。或者更好的是,将所有应用程序代码和资源放在一个单独的 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 提供 link。
- 确保替换 Qt 库的设置有效。设置一个干净的虚拟机,一步一步做所有的事情。为最终用户记录下来。
- 当下载了您的应用程序的用户想要替换 Qt 库时,请为他们提供一切,以便他们可以做到。
其实我觉得没有人会在意。但是你必须做好准备以防万一。不要在 Qt 论坛上尖叫您使用 Qt LGPLv3,但要确保它在应用程序的 "About" 屏幕下方某处可见。无论是否使用 Qt,Qt 公司都没有资源从 App Store 扫描每个应用程序。如果你是一个几乎零利润的小公司,他们也不会碰你。他们还有更重要的事情要做。
然而,看到在 LGPL 主题上使用 Qt 的人完全没有提供任何帮助,这是非常令人失望的。很可能所有开发人员都被指示回答 "IANAL, please contact our legal department"。法律部门会告诉你 - 购买我们的商业许可证,这是唯一的选择。在 Qt 网站上,您可以找到 Obligations of the LGPL。我并不感到惊讶,此页面上没有关于静态 linking 和提供目标文件 以重新 link 的字样。 Qt 公司只是不想告诉任何人这是可能的。
在我看来,LGPL 是一个巨大的进步,它使许多应用程序能够在不公开其源代码的情况下使用 Qt,从而为 Qt 带来了巨大的普及。更不用说诺基亚是第一个在移动设备上赞助 Qt 的人(Symbian,然后是 MeeGo)。
同时考虑 MeeGo 和黑莓,开发使用 Qt 的闭源移动应用程序并在各自的应用程序商店中发布它们没有问题。无需商业许可。
更新: 这是以前做过的。 LGPL 可以通过静态 linking 和 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
是的,有可能。
您可以使用此 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 应用等中使用相同的模板。
与