Как создать библиотеку для андроид

Создание и публикация библиотеки Android

Вступление

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

1. Создание библиотеки Android

Если ваша библиотека будет состоять только из классов Java, упаковывание ее в виде JAR и распространение ее с помощью файлового хоста, возможно, самый быстрый и простой способ поделиться ею. Если бы вы создали его из консоли, то подойдет следующая команда:

bash jar cvf mylibrary.jar Class1.class Class2.class . ClassN.class

Однако в этом руководстве показано, как работать с более сложными библиотеками, которые содержат не только классы Java, но также различные типы файлов и ресурсов XML. Такие библиотеки создаются в виде модулей библиотеки Android и обычно упаковываются в файлы AAR .

Давайте создадим простую библиотеку Android, которая предлагает пользовательский View для разработчиков, которые ее используют.

Шаг 1: Добавить новый модуль

Для начала добавьте новый Android-модуль в ваш проект, выбрав New> New Module из меню File . Вам будет показан следующий экран, который предлагает множество вариантов:

Выберите библиотеку Android и нажмите Далее . В следующей форме введите имя вашей библиотеки и нажмите Далее . Я буду называть эту библиотеку моей маленькой библиотекой.

На последнем экране выберите Add no Activity и нажмите Finish .

Ваш проект теперь будет иметь два модуля, один для приложения и один для библиотеки. Вот как выглядит его структура:

Шаг 2. Создайте макет

Создайте новый макет XML, щелкнув правой кнопкой мыши на папке res вашего библиотечного модуля и выбрав New> XML> Layout XML File . Назовите это my_view.xml .

Чтобы этот учебник был простым, мы LinearLayout собственный View котором есть два виджета TextView внутри LinearLayout . После добавления текста в виджеты TextView XML-файл макета должен выглядеть следующим образом:

Шаг 3: Создайте класс Java

Создайте новый класс Java и назовите его MyView.java . Обязательно поместите этот файл в каталог src модуля библиотеки, а не в модуль приложения.

Чтобы этот класс вел себя как представление, сделайте его подклассом класса LinearLayout . Android Studio предложит вам добавить несколько конструкторов в класс. После их добавления новый класс должен выглядеть так:

« `Открытый класс Java MyView расширяет LinearLayout <

Как видите, теперь у нас есть два конструктора. Чтобы избежать добавления кода инициализации в каждый конструктор, вызовите метод с именем initialize для каждого конструктора. Добавьте следующий код в каждый конструктор:

В методе initialize вызовите inflate чтобы связать макет, созданный на предыдущем шаге, с классом.

java private void initialize(Context context)

2. Использование библиотеки локально

Теперь, когда библиотека готова, давайте использовать ее в модуле приложения того же проекта, чтобы убедиться в отсутствии проблем. Для этого добавьте его в качестве зависимости compile в файл build.gradle модуля приложения:

Читайте также:  Андроид навигация одной кнопкой

groovy compile project(«:mylittlelibrary»)

Создайте новый Java-класс MainActivity внутри модуля приложения. Сделайте его подклассом класса Activity и переопределите его метод onCreate .

« `открытый класс Java MainActivity extends Activity <

Внутри метода onCreate создайте экземпляр пользовательского представления, используя его конструктор. Передайте его методу setContentView чтобы он заполнил все пространство экрана Activity :

« `java @Override protected void onCreate (Bundle saveInstanceState)

Ваша Activity сейчас готова. После добавления его в манифест приложения создайте свой проект и разверните приложение на устройстве Android. Вы должны увидеть пользовательский вид при запуске приложения.

3. Публикация вашей библиотеки на Bintray

Bintray — это популярная платформа, которую вы можете использовать для публикации библиотек Android. Это бесплатно и легко в использовании.

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

Посетите страницу своего профиля и нажмите кнопку « Изменить» . На следующей странице щелкните ссылку API Key для просмотра вашего API-ключа.

Запишите ключ, потому что он понадобится вам для аутентификации при использовании плагина Bintray.

Шаг 1: Добавьте необходимые плагины

Чтобы взаимодействовать с Bintray в Android Studio, вы должны включить плагин Bintray в dependencies файла build.gradle вашего проекта.

groovy classpath ‘com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2’

Поскольку вы будете загружать библиотеку в репозиторий Maven, вы также должны добавить плагин Maven, как показано ниже.

groovy classpath «com.github.dcendents:android-maven-gradle-plugin:1.3»

Шаг 2: применить плагины

Откройте файл build.gradle вашего библиотечного модуля и добавьте следующий код, чтобы применить плагины, которые мы добавили на предыдущем шаге.

groovy apply plugin: ‘com.jfrog.bintray’ apply plugin: ‘com.github.dcendents.android-maven’

Шаг 3: Укажите детали POM

Плагин Bintray будет искать файл POM при загрузке библиотеки. Даже если плагин Maven генерирует его для вас, вы должны указать значение тега groupId и значение тега version самостоятельно. Для этого используйте переменные group и version в файле Gradle.

groovy group = ‘com.github.hathibelagal.librarytutorial’ // Change this to match your package name version = ‘1.0.1’ // Change this to match your version number

Если вы знакомы с Maven и вам интересно, почему мы не указали значение тега artifactId , это потому, что плагин Maven по умолчанию будет использовать имя вашей библиотеки в качестве artifactId .

Шаг 4. Создайте JAR-файл источника

Для соответствия стандартам Maven ваша библиотека также должна иметь JAR-файл, содержащий исходные файлы библиотеки. Чтобы сгенерировать файл JAR, создайте новую задачу Jar , generateSourcesJar и укажите расположение исходных файлов с помощью функции from .

groovy task generateSourcesJar(type: Jar)

Шаг 5: Сгенерируйте Javadoc JAR

Также рекомендуется, чтобы в вашей библиотеке был JAR-файл, содержащий Javadocs. Поскольку в настоящее время у вас нет Javadocs, создайте новую задачу Javadoc , генерируйте Javadocs, чтобы сгенерировать их. Используйте переменную source чтобы указать расположение исходных файлов. Вам также следует обновить переменную classpath чтобы задача могла найти классы, принадлежащие Android SDK. Вы можете сделать это, добавив к нему возвращаемое значение метода android.getBootClasspath .

groovy task generateJavadocs(type: Javadoc)

Затем, чтобы сгенерировать JAR из Javadocs, создайте задачу Jar , generateJavadocsJar и передайте свойство destinationDir generateJavadocs в функцию from . Ваша новая задача должна выглядеть так:

groovy task generateJavadocsJar(type: Jar)

Чтобы убедиться в том, что задача generateJavadocsJar запускается только после завершения задачи generateJavadocs , добавьте следующий фрагмент кода, который использует метод dependsOn для упорядочивания задач:

Читайте также:  Debug android stack trace

groovy generateJavadocsJar.dependsOn generateJavadocs

Шаг 6: Включите сгенерированные файлы JAR

Чтобы включить исходные файлы и JAR-файлы Javadoc в список артефактов, которые будут загружены в репозиторий Maven, необходимо добавить имена их задач в configuration называемую архивами . Для этого используйте следующий фрагмент кода:

Шаг 7: Запустите задачи

Теперь пришло время выполнить задачи, которые мы создали на предыдущих шагах. Откройте окно Gradle Projects и найдите задачу с именем install .

Дважды щелкните его, чтобы запустить задачи, связанные с модулем библиотеки. По завершении работы у вас будет все необходимое для публикации библиотеки, действительный файл POM, файл AAR, JAR-файл с исходным кодом и JAR-файл Javadocs.

Шаг 8. Настройте плагин Bintray

Чтобы настроить плагин, вы должны использовать закрытие bintray в вашем файле Gradle. Сначала выполните аутентификацию, используя переменные user и key , соответствующие вашему имени пользователя Bintray и ключу API соответственно.

На Bintray ваша библиотека будет находиться внутри пакета Bintray . Вы должны предоставить подробную информацию об этом, используя интуитивно названные параметры repo , name , licenses и vcsUrl в закрытии pkg . Если пакет не существует, он будет создан автоматически для вас.

Когда вы загружаете файлы в Bintray, они будут связаны с версией пакета Bintray. Следовательно, pkg должен содержать закрытие version , для свойства name которого установлено уникальное имя. При желании вы также можете предоставить описание, дату выпуска и тег Git, используя параметры desc , vcsTag и vcsTag .

Наконец, чтобы указать файлы для загрузки, установите значение параметра configuration в архивы .

Это пример конфигурации:

Шаг 9: загрузка файлов с помощью плагина Bintray

Снова откройте окно Gradle Projects и найдите задачу bintrayUpload . Дважды щелкните по нему, чтобы начать загрузку файлов.

После завершения задачи откройте браузер, чтобы перейти на страницу сведений о пакете Bintray. Вы увидите уведомление о том, что у вас есть четыре неопубликованных файла. Чтобы опубликовать эти файлы, нажмите на ссылку « Опубликовать» .

4. Использование библиотеки из Bintray

Ваша библиотека теперь доступна в виде пакета Bintray. После того, как вы предоставите URL-адрес своего хранилища Maven, а также идентификатор группы, идентификатор артефакта и номер версии, любой разработчик сможет получить доступ к вашей библиотеке. Например, чтобы использовать созданную нами библиотеку, разработчики должны включить следующий фрагмент кода:

Обратите внимание, что разработчик должен явно включить ваш репозиторий в список repositories прежде чем добавлять библиотеку в качестве зависимости compile .

5. Добавление библиотеки в JCenter

По умолчанию Android Studio выполняет поиск библиотек в хранилище под названием JCenter . Если вы включите свою библиотеку в репозиторий JCenter, разработчикам не нужно будет ничего добавлять в свой список repositories .

Чтобы добавить свою библиотеку в JCenter, откройте браузер и перейдите на страницу сведений о пакете Bintray. Нажмите кнопку с надписью Добавить в JCenter .

Затем вы попадете на страницу, которая позволяет вам составить сообщение. Вы можете использовать поле « Комментарии», чтобы при желании упомянуть любую информацию о библиотеке.

Нажмите кнопку « Отправить» , чтобы начать процесс проверки Bintray. В течение одного или двух дней сотрудники Bintray свяжут вашу библиотеку с репозиторием JCenter, и вы сможете увидеть ссылку на JCenter на странице сведений о вашем пакете.

Любой разработчик может теперь использовать вашу библиотеку без изменения списка repositories .

Вывод

Из этого руководства вы узнали, как создать простой модуль библиотеки Android и опубликовать его как в своем собственном репозитории Maven, так и в репозитории JCenter. Попутно вы также узнали, как создавать и выполнять различные типы заданий.

Читайте также:  Лайма hd tv для андроид

Чтобы узнать больше о Bintray, посетите руководство пользователя Bintray .

Источник

Публикация Android библиотеки

Недавно у меня появилось желание попробовать создать свою собственную Android библиотеку и выложить ее на Maven Central репозиторий.

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

Я решил поделиться процессом публикации моей библиотеки Awesome-Buttons.

Ну что ж, приступим.

Регистрация на Sonatype JIRA и создание Issue

Перейдите на сайт Sonatype JIRA и создайте себе аккаунт.

Теперь войдите в аккаунт и создайте новый Issue :

Заполните всю необходимую информацию.

Обратите внимание на Group Id . Обычно в качестве его указывается доменное имя в обратном порядке.

Если у вас есть свой сайт или сайт библиотеки, то вы можете использовать его доменное имя (например: ru.freeit256 ), но для этого нужно будет дополнительно прописать запись в вашем регистраторе домена (после создания Issue вы увидите информацию как это сделать).

Я использовал другой подход: указал свой Github в качестве Group Id

Также для того, чтобы использовать Github в качестве Group Id вам нужно создать пустой репозиторий с именем OSSRH-74088

Не забудьте отправить ваше Issue на проверку и дождаться статуса CLOSED

Создаем Android библиотеку в Android Studio

Сначала создайте любое пустое приложение с app модулем.

Затем вы можете либо добавить модуль Android библиотеки, либо изменить текущий модуль на библиотечный. Читайте об этом на официальном сайте

Генерации GPG ключа

Перед публикацией необходимо сгенерировать пару GPG ключей.

Для генерации ключей выполните следующую команду:

Основные параметры при создании ключей:

формат шифрования: RSA and RSA

размер: 4096 бит

срок годности ключа можно указать 0 (никогда не истечет)

имя, email и комментарий укажите свои

Чтобы посмотреть все сгенерированные ключи выполните команду:

Обратите внимание, последние 8 символов это ID ключа:

Для подписи библиотеки мы будем использовать приватный ключ, а чтобы пользователи смогли удостовериться, что библиотека принадлежит нам, мы должны выложить публичный ключ на общедоступный сервер, например keyserver.ubuntu.com:

Чтобы получить приватный ключ для подписи нужно выполнить:

Вуаля! Позже он нам понадобится.

Настройка библиотеки для публикации:

Добавляем плагин io.github.gradle-nexus в корневой файл build.gradle :

Далее нам нужно создать два скрипта для модуля и корня нашей библиотеки.

Создадим в корне проекта папку scripts , и добавим новый скрипт publish-module.gradle :

Также нам нужно добавить скрипт publish-root.gradle :

Теперь нам нужно добавить maven-publish плагин и некоторые константы в начало build.gradle файла нашего модуля:

И самый важный момент, файл local.properties :

Публикация

После основных настроек, зайдите на Nexus Repository Manager и войдите под учетными данными JIRA Sonatype.

Далее переходим во вкладку Staging Profiles и выбираем необходимый профиль.

Копируем sonatypeStagingProfileId из адреса сайта и указываем его в local.properties файле:

Переходим к публикации.

Далее у вас есть два варианта зарелизить либу: вручную через графический интерфейс или с помощью gradle задачи.

Первый

Зайдите на сайт Nexus Repository Manager , перейдите во вкладку Staging Repositories и выберите необходимый репозиторий.

Чтобы выпустить релиз библиотеки нужно воспользоваться двумя командами close и release .

Для отмены релиза юзайте drop

Второй

Выполните команду, которая сама закроет и зарелизит вашу либу:

Заключение

Вы уже убедились, что процесс публикации Andorid либы весьма затратный и рутинный.

Я постарался изложить только основные моменты. Возможно у вас возникнут какие-либо ошибки, которые вам придется самим решать ну и конечно же гуглить!

Такова жизнь прогера: постоянно гуглить. 🙂

Надеюсь, что статья оказалась вам полезной.

Желаю всем хорошего кода и побольше успешных релизов! 🙂

Источник

Оцените статью