8,0
рейтинг
14 января в 13:10

Разработка → Реализация списка использованных библиотек в Android приложении. Попытка №2 из песочницы

Совсем недавно наткнулся на статью на Хабре о том, как реализовать диалоговое окно со списком использованных библиотек. Мне предложенный вариант показался слишком сложным, да и сам список смотрелся криво. В связи с этим я решил поделиться более простым и элегантным способом реализации данного функционала.

Прописываем зависимость в build.gradle нашего модуля:

compile('de.psdev.licensesdialog:licensesdialog:1.8.0')

Теперь нам нужно создать список с использованными библиотеками. Для этого в папке res/raw создаем файл license.xml (можно использовать и другие названия).

Пример:

<?xml version="1.0" encoding="utf-8"?>
<notices>
    <notice>
        <name>Application Crash Reporting for Android (ACRA)</name>
        <url>http://acra.ch/</url>
        <copyright>Copyright 2010 Emmanuel Astier & Kevin Gaudin</copyright>
        <license>Apache Software License 2.0</license>
    </notice>
    <notice>
        <name>Android ViewPagerIndicator</name>
        <url>http://viewpagerindicator.com/</url>
        <copyright>Copyright (C) 2011 The Android Open Source Project<br/>Copyright (C) 2012 Jake Wharton</copyright>
        <license>Apache Software License 2.0</license>
    </notice>
    <notice>
        <name>OrmLite</name>
        <url>http://ormlite.com/</url>
        <copyright>Copyright Gray Watson</copyright>
        <license>ISC License</license>
    </notice>
    <notice>
        <name>PhotoView</name>
        <url>https://github.com/chrisbanes/PhotoView</url>
        <copyright>Copyright 2011, 2012 Chris Banes.</copyright>
        <license>Apache Software License 2.0</license>
    </notice>
</notices>

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

  • Apache Software License 2.0
  • BSD 2/3 Clause License
  • Gnu General Public License 2.0/3.0
  • GNU Lesser General Public License 2.1/3
  • MIT
  • Mozilla Public License 1.1

Также можно создать свою лицензию, унаследовавшись от класса License и реализовав абстрактные методы.

Если у библиотеки нет копирайта, то просто пишем:

<copyright/>

Осталось написать код в нашей Activity:

new LicensesDialog.Builder(this)
            .setNotices(R.raw.license)
            .build()
            .showAppCompat();

Вот что получается на выходе:

image

Также можно создать лицензию прямо в Java:

final String name = "LicensesDialog";
final String url = "http://psdev.de";
final String copyright = "Copyright 2013 Philip Schiffer <admin@psdev.de>";
final License license = new ApacheSoftwareLicense20();
final Notice notice = new Notice(name, url, copyright, license);

new LicensesDialog.Builder(this)
            .setNotices(notice)
            .build()
            .showAppCompat();

Исходный код примера можно посмотреть здесь. Спасибо за внимание.
Махач Имангазалиев @ImangazalievM
карма
13,0
рейтинг 8,0
Android-программист
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (4)

  • 0
    Возможно это глупый вопрос, но зачем в приложении указывать текст лицензии, разве названия и/или ссылки на сайт недостаточно?
    • +2
      Потому что большинство лицензий этого требуют, в частности самая популярная — Apache v2, под которой лицензировано 90% библиотек.
  • +2
    Вот здесь бы gradle плагин, который спарсит зависимости из проекта, подтянет нужные лицензии (например, от сюда android-arsenal.com) и сгенерирует license.xml.
  • 0
    Лицензии можно взять и с tldrlegal.com. На нём еще удобно смотреть краткие требования лицензии.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.