support studio responde porque play library last las compatibilidad celular biblioteca aplicaciones aplicacion abre android lgpl

android - studio - play store



Usando la biblioteca LGPL en la aplicaciĆ³n de Android de pago (6)

¿Puedo usar una biblioteca LGPL en mi aplicación Android de pago? No voy a modificar la librería LGPL, solo quiero usarla. ¿Es legal?


El uso de LGPL en una aplicación gratuita o de pago de Android es legal, pero para cumplir con la LGPL tiene que:

  1. Proporcione al usuario una indicación de la biblioteca utilizada y dónde encontrar el código original;
  2. Configure el programa para no ofuscar el código cubierto por LGPL;
  3. Evite cualquier comprobación en su aplicación sobre el cumplimiento de la firma;
  4. Dar al usuario una indicación de cómo reemplazar la biblioteca.

Para el punto 4 puede indicar el uso de dex2jar, reemplazar el código LGPL y volver a firmar el APK. Necesita mucho trabajo para el usuario, pero es posible hacerlo y permitir que el usuario final vuelva a combinar o vincular el código como lo indica la LGPL. Además, si su aplicación utiliza algún servicio de Google, el usuario debe crear una cuenta para generar la propia clave de API y así sucesivamente.



La biblioteca droidText (utilizada para exportar a formato PDF en Android y lanzada bajo LGPL) tiene una explicación detallada de cómo usar su biblioteca y seguir cumpliendo con la LGPL:

http://code.google.com/p/droidtext/wiki/LGPLCompliance

Lo encontré muy útil. Básicamente, utiliza un utililty (dex2jar) para sacar el jar de la biblioteca del archivo dex, lo que permite que el usuario final se actualice con una versión posterior de la biblioteca droidText si así lo desean.


No soy abogado, pero a mi entender de la licencia pública general menor GNU 3.0 , la sección 4 excluye explícitamente la vinculación estática como lo establece el requisito:

Puede transmitir un Trabajo combinado bajo los términos de su elección que, en conjunto, no restringen efectivamente la modificación de las partes de la Biblioteca contenidas en el Trabajo combinado y la ingeniería inversa para depurar dichas modificaciones, si también realiza cada una de las siguientes acciones :

  • [...]
  • d) Realice una de las siguientes acciones:

    • 0) Transmitir la Fuente Correspondiente Mínima bajo los términos de esta Licencia, y el Código de la Aplicación Correspondiente en una forma adecuada, y bajo los términos que permitan, que el usuario vuelva a combinar la Aplicación con una versión modificada de la Versión Vinculada para producir una Trabajo Combinado modificado, en la forma especificada por la sección 6 de la GPL de GNU para transmitir la Fuente Correspondiente.
    • 1) Utilice un mecanismo de biblioteca compartida adecuado para enlazar con la biblioteca. Un mecanismo adecuado es uno que (a) utiliza en tiempo de ejecución una copia de la Biblioteca que ya está presente en el sistema informático del usuario, y (b) funcionará correctamente con una versión modificada de la Biblioteca que sea compatible con la interfaz con la Versión Vinculada.

(Énfasis mío.)

La sección 4d.0 no es posible por la naturaleza de los APK de Android: el APK se compila a Dex y se firma como un todo, contiene bibliotecas a las que se hace referencia y, por lo tanto, el intercambio de bibliotecas no puede realizarse sin el código fuente original, el almacén de claves y la contraseña del almacén de claves.

La sección 4d.1 puede ser posible desplegando dos APKs:

  • Un APK que contiene la biblioteca LGPL y, a su vez, código abierto y licenciado bajo LGPL
  • Otro APK propietario que hace referencia a la aplicación LGPL.

Sin embargo, la implementación de dicha aplicación no es posible directamente a través de Google Play sin agregar específicamente el requisito de que el usuario proceda a descargar la dependencia de LGPL, que debería implementarse como una aplicación separada en Google Play. Esto sería muy tedioso para el usuario final y, de manera realista, no es una opción para una aplicación de consumidor típica.

Según la discusión con el Prof. Falken en la respuesta de William Tate , los términos de la LGPL pueden ser más aplicables a las bibliotecas de C incluidas a través del código nativo, ya que residen dentro de la APK como una biblioteca separada. Aunque no se puede firmar la APK, es posible volver a empaquetar la APK con el archivo objeto reemplazado. Desde mi perspectiva, eso técnicamente cumple con los requisitos de la licencia.


Si está creando una aplicación de Android de pago, probablemente tenga problemas con un problema específico de LGPL: la sustituibilidad. En general, indica que cuando distribuye un trabajo combinado, debe proporcionar a un usuario la posibilidad de sustituir la biblioteca con una versión diferente (por ejemplo, más reciente). Muy dudoso en el caso del archivo DEX, como se mencionó en comentarios anteriores.

Una alternativa a un solo archivo DEX es hacer de una biblioteca dependiente una aplicación separada, lanzada en LGPL. En dicha aplicación, creará un servicio al que se conectará desde su aplicación de pago. Luego, para sustituir la biblioteca LGPL con una versión más reciente, solo se requiere la recompilación y la reinstalación de la biblioteca APK.

La molestia es, por supuesto, que ahora tienes más de un APK para instalar.


Siempre he pensado que la LGPL era en gran medida una "zona gris". Si bien hay detalles específicos sobre cómo se deben usar las bibliotecas / códigos LGPL, etc., no necesariamente refleja los requisitos exactos de los autores.

Personalmente, recomendaría ponerse en contacto con el (los) autor (es), explicar sus inquietudes y preguntar si están contentos de permitirle usarlo.