Поддерживает ли App Store приложение Qt, связанное с библиотекой QT LGPLv3

Существует любой способ отправить в App Store приложение Qt Quick Controls

в соответствии с лицензией LGPLv3, не нарушая правила App Store?

Я хочу, чтобы развернуть мое приложение в магазине iOS, используя динамически связанную версию Qt-библиотек.

Я пытался найти ответ на каждом форуме, но кажется очень сложным.

Любое предложение очень ценится.

Заранее спасибо.

Ответ 1

App Store не заботится о том, какую лицензию вы используете. Это касается пользователей вашего приложения и авторов библиотеки. Основной смысл лицензии LGPLv3 заключается в том, что конечные пользователи должны иметь возможность заменить библиотеку своей собственной модифицированной версией. Это очень важно понять, динамический/статический/все остальное просто отвлекает.

Пусть переместится в Qt. Он доступен с лицензией LGPLv3 на основных настольных (Windows, OSX, Linux) и мобильных (iOS, Android) операционных системах. Предположим, вы разработали приложение и хотите, чтобы ваш исходный код был закрыт. На рабочем столе вы можете динамически связываться с библиотеками 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. Установите.apk с модифицированными библиотеками Qt

Давайте поговорим о iOS. Многие говорят, что использовать LGPLv3 с iOS невозможно из-за статической привязки. Неправильно. Опять же, вам просто нужно предоставить конечному пользователю возможность заменить библиотеки Qt. Как? Предоставьте объектные файлы для конечного пользователя. Или, что еще лучше, поместите весь свой код приложения и ресурсы в отдельный плагин Qt Quick, который будет скомпилирован в статическом архиве библиотеки (технически только все связанные с ним объектные файлы) для iOS. Затем для каждого пользователя, установившего ваше приложение, вы должны предоставить инструкции о том, как заменить библиотеки Qt:

  1. Загрузите файлы проектов и объектные файлы с вашего сайта
  2. Загрузите инструменты XCode и разработчика с веб-сайта Apple
  3. Замените библиотеки Qt
  4. Разверните приложение на своем устройстве

Раньше это было невозможно, потому что для развертывания на устройстве пользователю приходилось регистрировать программу Apple Developer. Но это уже не так. Вы можете запустить приложение на устройстве, используя бесплатную учетную запись Apple ID

Права конечного пользователя защищены. Они могут заменить библиотеки Qt. Просто убедитесь, что вы выполните необходимые действия:

  1. Упомяните в своем приложении, что вы используете библиотеки Qt, а также упоминаете, что используете их под лицензией LGPLv3. Предоставьте ссылку на LGPLv3 lincese.
  2. Убедитесь, что ваша настройка замены библиотек Qt работает. Настройте чистую виртуальную машину и делайте все шаг за шагом. Документируйте его для конечных пользователей.
  3. Когда пользователи, которые скачали ваше приложение, хотят заменить библиотеки Qt, предоставите им все, чтобы они могли это сделать.

На самом деле я не думаю, что кому-то это понравится. Но на всякий случай вы должны быть готовы. Не кричите, что вы используете Qt LGPLv3 на форумах Qt, но убедитесь, что вы видите его где-то в окне приложения "О себе". Компания Qt не имеет ресурсов для сканирования каждого приложения из App Store, если использует Qt или нет. Они не тронут вас, если вы мало прибыли. У них есть более важные дела.

Это очень разочаровывает, однако, чтобы не видеть абсолютно никакой помощи от людей, которые работают в Qt на предмете LGPL. Скорее всего, всем разработчикам было поручено ответить "IANAL, пожалуйста, свяжитесь с нашим юридическим отделом". Юридический отдел скажет вам - купите нашу коммерческую лицензию, это единственный вариант. На веб-сайте Qt вы можете найти Обязательства LGPL. Я не удивлен, нет никаких слов о статической привязке и предоставлении объектных файлов для повторной ссылки на этой странице. Компания Qt просто предпочитает никому не рассказывать.

С моей точки зрения LGPL был огромным шагом, который позволил большому количеству приложений использовать Qt, не раскрывая их исходный код, приносящий огромную популярность Qt. Не говоря уже о том, что Nokia была тем, кто впервые спонсировал Qt на Mobile (Symbian, а затем MeeGo).

Также, размышляя о MeeGo и Blackberry, не было никаких проблем с разработкой мобильных приложений с открытым исходным кодом, которые используют Qt и публикуют их в соответствующих магазинах приложений. Коммерческая лицензия не требуется.

Обновление: это было сделано раньше. LGPL возможен со статической привязкой и App Store. https://news.ycombinator.com/item?id=4302517

Если вопрос закрыт как не по теме, я скопировал ответ здесь https://opensource.stackexchange.com/info/6463/in-2018-if-i-use-c-qt-5-10-0- к Построю-закрытый исходный код-приложения требуется-ОП /6495 # 6495