Добавить в корзинуПозвонить
Найти в Дзене

Делаем и публикуем первую библиотеку для Android приложений. Личный опыт.

Шаг 0. Концепция проекта и планирование Описываем свою идею в рамках концепции. Планируем и оцениваем работы. Шаг 1. Создать проект 1.1. Проект Создаем новый проект с табами через Android Studio. Обновляем до актуальных версий по официальным инструкциям: 1.2. Настройка git Включаем гит репозиторий в проект через Android Studio. Настриваем .gitignore файл. Например, я спрятал все файлы /.idea/. Делаем init коммит проекта. 1.3. Публикация в github Делаем репозиторий в Github по инструкции. Публикуем существующий проект по инструкции. Итог шага 1: Шаг 2. Делаем Open-Source Итог шага 2: Шаг 3. Разработка библиотеки Итог шага 3: Шаг 4. Регистрация в maven central 4.1. Подготовка координат библиотеки Делаем по инструкции, хорошая практика это реверс вашего домена, если его нет, используйте домен гитхаба. Пример: group = "com.yugyd.jvmmvvm" artefactId = "jvmmvvm-domain" version = "1.0.0" Хороший гайд, поможет вам разобраться, что такое groupId, artifactId. По версионированию крайне рекомендую

Шаг 0. Концепция проекта и планирование

Описываем свою идею в рамках концепции. Планируем и оцениваем работы.

Шаг 1. Создать проект

1.1. Проект

Создаем новый проект с табами через Android Studio.

Обновляем до актуальных версий по официальным инструкциям:

  • Gradle.
  • Kotlin, тут аккуратнее, если сделать слишком высокую версию отбросите потенциальных юзеров
  • AGP.
  • Compose - пришлось оккатить на старый compose compiler для kotlin 1.9.

1.2. Настройка git

Включаем гит репозиторий в проект через Android Studio.

Настриваем .gitignore файл. Например, я спрятал все файлы /.idea/.

Делаем init коммит проекта.

1.3. Публикация в github

Делаем репозиторий в Github по инструкции.

Yugyd/jvm-mvvm

Публикуем существующий проект по инструкции.

Итог шага 1:

initial commit: generate basic Android app structure · Yugyd/jvm-mvvm@1f3358b

Шаг 2. Делаем Open-Source

  • Добавляем README.
  • Добавляем лицензцию.

Итог шага 2:

Add LICENSE and README files with project details and Apache License · Yugyd/jvm-mvvm@135eb42

Шаг 3. Разработка библиотеки

  • Определяем структуру проекта.
  • Настраиваем модули.
  • Разрабатываем саму библиотеку.
  • Пишем сэмпл проект, напишется сам, так как реализацию библиотеки будем сразу тестировать на сэмпл проекте.

Итог шага 3:

Implement JVMMVVM architecture and add sample app · Yugyd/jvm-mvvm@bbcb014

Шаг 4. Регистрация в maven central

4.1. Подготовка координат библиотеки

Делаем по инструкции, хорошая практика это реверс вашего домена, если его нет, используйте домен гитхаба.

Пример:

group = "com.yugyd.jvmmvvm"

artefactId = "jvmmvvm-domain"

version = "1.0.0"

Хороший гайд, поможет вам разобраться, что такое groupId, artifactId.

Naming conventions of Maven coordinates (groupId, artifactId, and version) – Maven

По версионированию крайне рекомендую классику:

Semantic Versioning 2.0.0

Для приложений (общее ознакомление):

Версия вашего приложения | Android Studio | Android Developers

4.2. Регистрация и настройка в Maven Central (Sonatype)

Создание аккаунта в maven central.

central.sonatype.com

Лучше делать через Github, тогда автоматически верифицируется group через github.

Настраиваем namespaces, я добавил свой namespace от домена.

Далее верицируем namespace согласно инструкции

В моем случае TXT запись с key, важно в качестве subdomain использовал @ и верификация прошла.

Далее переходим в user tokens и делаем данные для авторизации. Сохраняем все данные.

Central Portal → Account → Tokens

4.3. Делаем GPG-подпись

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

В сети нашел следующие настройки:

  • RSA and RSA
  • 4096
  • срок — не ограничен
  • email — тот же, что в Sonatype

Тут был затык, долго искал id, но он оказался в логе там тип, ид и дата.

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

Шаг 5. Настраиваем публикацию в проекте

5.1. Заполняем мета данные библиотеки

Я обычно делаю это в gradle.properties.

5.2. Добавляем подпись наших артефактов в build.gradle

Используем базовый "signing" плагин.

Важный момент: используем GPG ключи через переменные окружения для лучшей безопасности и возможности работать в CI/CD. Еще момент в SIGNING_KEY_ID нужен short вариант, а не long.

5.3. Настраиваем публикацию наших артефактов в Maven Central

Используем базовый "maven-publish" плагин.

Важный момент: если это android library, включаем исходники и документацию проекта в android extension.

Полезные ссылки:

Как настроить публикацию в maven central.

Community Home

Если вам нужно опубликовать плагины Gradle. Поможет документация ниже.

Community Home

Подробнее про подпись приложения.

Community Home

5.4. Публикация альфа версии библиотеки в maven local

Проверьте что все подписано и все ок по артефактам.

Итог шага 5:

Add publishing and signing configuration for Maven artifacts · yugyd/jvm-mvvm@e086bf9

Шаг 6. Публикация альфа версии библиотеки

Готово! Публикуйте библиотеку в maven central.

Шаг 7. Тестирование и документация

По хорошему вы должны это сделать в момент разработки (шаг 3), но если вы по какой-то причине это не реализовали, обязательно сделайте.

Пишем понятную документацию, для документации можно использовать dokka.

Get started with Dokka | Kotlin

Пишем тесты, процент покрытия должен быть очень высокий, так как это библиотека.

Шаг 7. Продвижение библиотеки

Например статьи и конференции.

#технологии #it #dev #Android #AndroidРазработка #Kotlin #Java #OpenSource #РазработкаПриложений #MobileDevelopment #Разработка #Приложения