ios qt licensing

ios - ¿App Store acepta la aplicación Qt vinculada con QT Library LGPLv3?



licensing (1)

Hay alguna forma de enviar a la App Store una aplicación de Qt Quick Controls

¿Bajo licencia LGPLv3 sin violar las reglas de la App Store?

Lo que quiero hacer es implementar mi aplicación en la tienda iOS usando una versión enlazada dinámicamente de las bibliotecas Qt.

Intenté encontrar una respuesta en todos los foros, pero parece muy difícil.

Cualquier sugerencia es muy apreciada.

Gracias por adelantado.


App Store no le importa qué licencia utilizas. Son los usuarios de su aplicación y los autores de la Biblioteca quienes se preocupan. El punto principal de la licencia LGPLv3 es que los usuarios finales deben tener la posibilidad de reemplazar la biblioteca con su propia versión modificada. Esto es muy importante de entender, dinámico / estático / todo lo demás es simplemente una distracción.

Vayamos a Qt. Está disponible con la licencia LGPLv3 en los principales sistemas operativos de escritorio (Windows, OSX, Linux) y móviles (iOS, Android). Supongamos que desarrolla una aplicación y desea mantener cerrado su código fuente. En el escritorio puede enlazar dinámicamente a las bibliotecas Qt. Cuando los usuarios finales instalan su aplicación, pueden reemplazar las bibliotecas Qt de la siguiente manera:

  1. Compila su propia versión de librerías Qt
  2. Navega por la ubicación donde está instalada la aplicación
  3. Reemplace las bibliotecas Qt originales que se enviaron con su aplicación con sus propias versiones modificadas

Parece fácil, ¿verdad? El objetivo principal de LGPLv3 se logra. El usuario puede reemplazar bibliotecas.

Pasando a las plataformas móviles, comenzando con Android. Aunque se vincula dinámicamente a las bibliotecas Qt, ahora tenemos un pequeño problema. El usuario no puede navegar a C:/Program Files/YourApp y reemplazar las bibliotecas Qt, porque es Android. El enraizamiento no es una opción, ya que no funciona en todos los dispositivos (y puede que no sea legal). Recuerde, el objetivo principal de LGPLv3 es brindar a los usuarios la capacidad de reemplazar la biblioteca y ejecutar la versión modificada de su aplicación en su dispositivo.

¿Solución? Proporcione el archivo .apk a cada usuario que instaló su aplicación con instrucciones detalladas sobre cómo:

  1. Descomprime tu archivo .apk
  2. Reemplazar bibliotecas Qt
  3. Zipalign / pack / signtool a un nuevo .apk
  4. Instalar .apk con librerías Qt modificadas

Hablemos de iOS. Muchos dicen que no es posible usar LGPLv3 con iOS debido a la vinculación estática. Incorrecto. De nuevo, solo tiene que dar al usuario final la posibilidad de reemplazar las bibliotecas Qt. ¿Cómo? Proporcione sus archivos de objetos para que el usuario final los vuelva a vincular. O incluso mejor, coloque todos los recursos y el código de su aplicación en un complemento Qt Quick separado que se compilará en un archivo de biblioteca estático (técnicamente solo todos los archivos de objetos concatenados) para iOS. Luego, para cada usuario que instaló su aplicación, debe proporcionar instrucciones sobre cómo reemplazar las bibliotecas Qt:

  1. Descargue archivos de proyecto y archivos de objetos desde su sitio web
  2. Descarga XCode y las herramientas de desarrollo del sitio web de Apple
  3. Reemplazar bibliotecas Qt
  4. Implementa la aplicación en tu dispositivo

Antes, esto no era posible porque, para poder implementarlo en el dispositivo, el usuario tenía que inscribirse en el Programa para desarrolladores de Apple. Pero este ya no es el caso. Puede iniciar su aplicación en un dispositivo usando una cuenta gratuita de ID de Apple

Los derechos de usuario final están protegidos. Pueden reemplazar bibliotecas Qt. Solo asegúrate de hacer los pasos requeridos:

  1. Mencione en su aplicación que usa las bibliotecas Qt y también mencione que las usa bajo la licencia LGPLv3. Proporcionar un enlace a LGPLv3 lincese.
  2. Asegúrese de que la configuración de reemplazo de las bibliotecas Qt funcione. Configurar una máquina virtual limpia y hacer todo paso a paso. Documentarlo para los usuarios finales.
  3. Cuando los usuarios que descargaron tu aplicación quieren reemplazar las bibliotecas Qt, dales todo para que puedan hacerlo.

En realidad no creo que a nadie le importe. Pero tienes que estar listo por si acaso. No grites que usas Qt LGPLv3 en los foros de Qt, pero asegúrate de tenerlo visible en algún lugar en la pantalla "Acerca de" de tu aplicación. La compañía Qt no tiene recursos para analizar todas las aplicaciones de la App Store si usa Qt o no. Tampoco te tocarán si eres una pequeña ganancia cercana a cero. Tienen cosas más importantes que hacer.

Sin embargo, es muy decepcionante no ver ninguna ayuda de las personas que trabajan en Qt en el tema LGPL. Probablemente todos los desarrolladores recibieron instrucciones de responder "IANAL, comuníquese con nuestro departamento legal". El departamento legal le informará: compre nuestra licencia comercial, es la única opción. En el sitio web de Qt puede encontrar Obligaciones de la LGPL . No me sorprende, no hay ninguna palabra acerca de la vinculación estática y la provisión de archivos de objetos para volver a vincular en esta página. La compañía Qt simplemente prefiere no decirle a nadie que es posible.

Desde mi punto de vista, la LGPL fue un gran paso que permitió a muchas aplicaciones utilizar Qt sin revelar su código fuente, lo que trajo una gran popularidad a Qt. Sin mencionar que Nokia fue el primero que patrocinó Qt en Mobile (Symbian y luego MeeGo).

Además de pensar en MeeGo y Blackberry, no hubo ningún problema en desarrollar aplicaciones móviles de código cerrado que usen Qt y publicarlas en las respectivas tiendas de aplicaciones. No se necesita licencia comercial.

Actualización : esto se ha hecho antes. LGPL es posible con enlaces estáticos y App Store. https://news.ycombinator.com/item?id=4302517

En caso de que la pregunta se cierre como fuera de tema, copié la respuesta aquí 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