sources - исходники android




Использование библиотеки LGPL в платном Android-приложении (4)

Библиотека droidText (используемая для экспорта в формат PDF на Android и выпущенная под LGPL) содержит подробное объяснение того, как использовать их библиотеку и при этом соблюдать LGPL:

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

Я нашел это очень полезным. В основном вы используете утилиту (dex2jar), чтобы извлечь банку из библиотеки OUT файла dex, что позволяет конечному пользователю обновить более позднюю версию библиотеки droidText, если они этого захотят.

Могу ли я использовать библиотеку LGPL в моем платном приложении для Android? Я не собираюсь изменять библиотеку LGPL, я просто хочу ее использовать. Это законно?


Если вы делаете платное приложение для Android, у вас, вероятно, будут проблемы с конкретной проблемой LGPL: заменяемость. Как правило, в нем говорится, что когда вы распространяете объединенную работу, вы должны предоставить пользователю возможность заменить библиотеку другой версией (например, более новой). Очень сомнительно в случае файла DEX, как упоминалось в предыдущих комментариях.

Альтернативой отдельному файлу DEX является создание из зависимой библиотеки отдельного приложения, выпущенного на LGPL. В таком приложении вы создаете сервис, к которому вы подключаетесь из своего платного приложения. Затем для замены библиотеки LGPL более новой версией требуется только перекомпиляция и переустановка APK библиотеки.

Конечно, проблема в том, что теперь вам нужно установить более одного APK.


Я всегда думал, что LGPL - это «серая зона». Хотя есть некоторые особенности того, как следует использовать код / ​​библиотеки LGPL и т. Д., Они не обязательно отражают точные требования авторов.

Лично я бы порекомендовал связаться с авторами, объяснить ваши проблемы и спросить, готовы ли они разрешить вам его использовать.


Я не юрист, но из моего понимания GNU Lesser General Public License 3.0 , четкость раздела 4 исключает статическое связывание, поскольку требование гласит:

Вы можете передать Комбинированную работу на условиях по вашему выбору, которые, вместе взятые, фактически не ограничивают изменение частей Библиотеки, содержащихся в Комбинированной работе, и обратный инжиниринг для отладки таких модификаций, если вы также выполняете каждое из следующих действий :

  • [...]
  • г) Выполните одно из следующих действий:

    • 0) Передать Минимальный Соответствующий Источник в соответствии с условиями настоящей Лицензии и Код Соответствующего Приложения в форме, подходящей и на условиях, которые позволяют пользователю рекомбинировать или связывать Приложение с модифицированной версией Связанной версии, чтобы произвести модифицированная комбинированная работа, в порядке, указанном в разделе 6 GNU GPL для передачи соответствующего источника.
    • 1) Используйте подходящий механизм разделяемой библиотеки для связи с библиотекой. Подходящим механизмом является тот, который (а) использует во время выполнения копию библиотеки, уже имеющейся в компьютерной системе пользователя, и (б) будет работать правильно с модифицированной версией библиотеки, совместимой по интерфейсу с связанной версией.

(Акцент мой.)

Раздел 4d.0 невозможен по природе Android APK: APK скомпилирован в Dex и подписан целиком и содержит ссылочные библиотеки, и поэтому замена библиотек невозможна без исходного исходного кода, пароля хранилища ключей и хранилища ключей.

Раздел 4d.1 может быть возможен путем развертывания двух APK:

  • Один APK, содержащий библиотеку LGPL и, в свою очередь, с открытым исходным кодом и лицензированный под LGPL
  • Еще один проприетарный APK со ссылкой на приложение LGPL.

Однако развертывание такого приложения невозможно напрямую через Google Play без специального добавления требования о том, чтобы пользователь продолжил загрузку зависимости LGPL, которую необходимо будет развернуть как отдельное приложение в Google Play. Это было бы очень утомительно для конечного пользователя и реально не подходит для типичного потребительского приложения.

В соответствии с обсуждением с профессором Фалькеном в ответе Уильяма Тейта , условия LGPL могут быть более применимы к библиотекам C, включенным через нативный код, поскольку они находятся внутри APK как отдельная библиотека. Хотя APK не может быть подписан, существует возможность перепаковать APK с заменой объектного файла. С моей точки зрения, это технически соответствует требованиям лицензии.





lgpl