App Store是否接受与QT Library LGPLv3链接的Qt应用程序 [英] Does App Store accept Qt app linked with QT Library LGPLv3

查看:146
本文介绍了App Store是否接受与QT Library LGPLv3链接的Qt应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有办法在不违反App Store规则的情况下,在LGPLv3许可下向App Store提交Qt Quick Controls应用程序

There is any way to submit to the App Store an Qt Quick Controls application

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

What i want to do is to deploy my app on iOS store using a dynamically linked version of the Qt libraries.

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

I tried to find an answer in every forum but seems very difficult.

任何建议都非常感谢。

提前致谢。

推荐答案

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

App Store does not care which license you use. It is the users of your application and the Library authors who care. The main point of the LGPLv3 license is that the end users must have the possibility to replace the library with their own modified version. This is very important to understand, dynamic / static / everything else is just distracting.

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

Let's move to Qt. It is available with LGPLv3 license on major Desktop (Windows, OSX, Linux) and mobile (iOS, Android) operating systems. Suppose you develop an application and want to keep your source code closed. On the Desktop you can link dynamically to Qt libraries. When the end users install your application, they can replace Qt libraries in the following way:


  1. 编译他们自己的Qt库版本

  2. 导航安装应用程序的位置

  3. 用您自己的修改版本替换您的应用程序附带的原始Qt图书馆

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

Looks easy, right? The main goal of LGPLv3 is achieved. The user can replace libraries.

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

Moving to the mobile platforms, starting with Android. Even though you link dynamically to the Qt libraries, we now have a small problem. The user can not navigate to C:/Program Files/YourApp and replace Qt libraries, because it's Android. Rooting is not an option, since it doesn't work on every device (and might not be legal). Remember, the main goal of LGPLv3 is to give the users ability to replace the library and run the modified version of your application on their device.

解决方案?向安装了您的应用程序的每个用户提供.apk文件,详细说明如何:

Solution? Provide .apk file to every user who installed your application with detailed instructions on how to:


  1. 解压缩.apk文件

  2. 替换Qt库

  3. Zipalign / pack / signtool到新的.apk

  4. 使用修改过的Qt库安装.apk

  1. Unpack your .apk file
  2. Replace Qt libraries
  3. Zipalign / pack / signtool to a new .apk
  4. Install .apk with modified Qt libraries

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

Let's talk about iOS. Many say it is not possible to use LGPLv3 with iOS because of static linking. Wrong. Again, you just need to give the end user the possibility to replace Qt libraries. How? Provide your object files for the end user to relink. Or even better, put all your application code and resources in a separate Qt Quick plugin which will compile in a static library archive (technically just all object files concatenated together) for iOS. Then for every user who installed your application you have to provide instructions on how to replace Qt libraries:


  1. 从您的下载项目文件和目标文件网站

  2. 从Apple网站下载XCode和开发人员工具

  3. 替换Qt库

  4. 将应用程序部署到您的设备

  1. Download project files and object files from your website
  2. Download XCode and developer tools from Apple website
  3. Replace Qt libraries
  4. Deploy application to your device

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

Before this was not possible because in order to deploy on the device the user had to enroll Apple Developer Program. But this is not the case any more. You can launch your app on a device using a free Apple ID account

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

The end user rights are protected. They can replace Qt libraries. Just make sure you do required steps:


  1. 在您的应用程序中提及您使用Qt库并提及您在LGPLv3许可下使用它们。提供LGPLv3 lincese的链接。

  2. 确保更换Qt库的设置有效。设置一个干净的虚拟机,一步一步地完成所有工作。为最终用户提供文档。

  3. 当下载应用程序的用户想要替换Qt库时,请提供所有内容,以便他们可以执行此操作。

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

Actually I don't think anyone would care. But you have to be ready just in case. Do not scream you use Qt LGPLv3 on Qt forums, but make sure you have it visible somewhere down in your application's "About" screen. Qt company does not have resources to scan every application from the App Store if it uses Qt or not. Neither they will touch you if you are a small-near-zero-profit. They have more important things to do.

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

It is very dissapointing however to see absolutely no help from people who work in Qt on the LGPL subject. Most likely all developers were instructed to answer "IANAL, please contact our legal department". The legal department will tell you - buy our commercial license, it's the only option. On the Qt website you can find Obligations of the LGPL. I am not surprised, there is no word about static linking and providing object files for re-link on this page. Qt company simply prefers not to tell anyone it is possible.

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

From my point of view LGPL was a huge step which enabled a lot of application to use Qt without disclosing their source code bringing huge popularity to Qt. Not to mention Nokia was the one who sponsored Qt on Mobile first (Symbian and then MeeGo).

同时考虑MeeGo和Blackberry,开发封闭源代码没有问题使用Qt并在各自的应用商店中发布它们的移动应用。无需商业许可。

Also thinking about MeeGo and Blackberry, there was no problem with developing closed source mobile apps that use Qt and publishing them in respective app stores. No commercial license needed.

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

如果问题因为偏离主题而被关闭,我在这里复制了答案
https://opensource.stackexchange。 COM /问题/ 6463 /在-2018-IF-I-使用-C-QT-5-10-0到集结一个封闭 - 源应用程序需要-OPE / 6495#6495

In case the question gets closed as off-topic, I copied the answer here 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

这篇关于App Store是否接受与QT Library LGPLv3链接的Qt应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆