1. Главная страница » Компьютеры

Android studio создание библиотеки

Автор: | 16.12.2019

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

Для создания модуля в Android Studio выбираете File > New > New Module. Далее есть 2 варианта. Если вы планируете создать «чистую» java-библиотеку, в качестве типа указывайте Java Library. Если же вы собираетесь использовать android-специфичные вещи и вам понадобятся классы из пакетов android.* , то создавайте Android Library.

В итоге получается подобная структура (при выборе Java Library структура будет немного проще):

Android Studio при создании модуля зачем-то приводит название к lowercase, но если это принципиально, то после создания его можно переименовать с использованием нужного регистра.

Теперь нужно добавить соответствующую зависимость в build.gradle зависимых модулей:

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

Для этого создаём целевую папку и перетаскиваем в неё все сторонние модули:

Затем открываем settings.gradle и прописываем кастомные пути для всех модулей:

PS: Есть вариант, что при попытке запуска проекта всё упадёт примерно с такой ошибкой:

Такое возникает при использовании JDK8. Придётся откатиться до JDK7 (впрочем, в JDK8 смысла пока нет).

Рано или поздно у всех разработчиков накапливается достаточное количество готовых решений и хочется поделиться ими с друзьями, сотрудниками или со всем миром. Но к сожалению у большинства «руки не доходят», так как нужно оформить решение как отдельную библиотеку и потом разобраться как залить ее на открытый репозиторий. К тому же бытует мнение что это не так просто. Так вот, в этой статье мы разрушим этот миф, так как с приходом Gradle в стек технологий Android все стало намного проще.

Использование BottomTabLayout

Понятно, что первый шаг — написание собственной библиотеки. В этом примере я использую библиотеку BottomTabLayout. Эта библиотека позволяет в несколько строчек добавить нижний TabLayout, который перекочевал к нам в Android из мира iOS.

1. Набор табов задается через xml-файл ресурсов menu. Например:

2. В коде выше свойство icon — это ресурс selector , который мы создаем в drawable :

Состояния state_selected и default здесь обязательные, так как нам нужно выделять выбранный таб.

3. Создаем selector для текста:

4. Создаем стиль текста:

5. Добавляем BottomTabLayout на разметку activity :

6. Настраиваем в классе activity :

7. В нашем примере при переключении таба меняется фрагмент в контейнере:

Вот такая вот простенькая библиотека. На GitHub можно подробней ознакомится с BottomTabLayout.

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

Теперь я расскажу вам, как имея похожие наработки, поделиться ими с миром.

Создание модуля в Android Studio

1. Для начала создаем проект в Android Studio. Для удобства модуль app переименовываем в sample. Здесь будет лежать пример использования нашей библиотеки.

2. Создаем новый модуль:

3. Тип модуля выбираем Android Library:

4. Это и будет наша библиотека, поэтому название соответствующее — bottomtablayout.

5. Теперь settings.gradle у нас должен выглядеть так:

6. В модуле sample, в build.gradle добавляем зависимость:

Это делается временно, пока наша библиотека существует только локально.

7. Теперь мы можем написать нашу библиотеку (или перенести готовый код) и протестировать ее в модуле sample.

8. Когда библиотека готова, заливаем ее на свой GitHub-аккаунт.

9. Пишем туториал в README.md.

Добавление библиотеки на Bintray

1. Если библиотека готова и вы считаете что пора миру ее увидеть, заходим и регистрируемся на сайте Bintray.

2. В файл build.gradle проекта добавляем зависимость:

3. В build.gradle-файле модуля библиотеки (в нашем случае это bottomtablayout) применяем плагин:

И в этом же файле:

  • groupId — пакет (может отличаться от пекейджа самого модуля). Рекомендую называть groupId так: com.github. , поскольку если вы когда-то захотите залить свою библиотеку на Maven Central нужно быть владельцем домена который фигурирует в названии groupId .
  • artifactId — название модуля.
  • publishVersion — версия публикации.
  • desc — описание библиотеки.
  • licences — лицензия.
  • uploadName — название библиотеки.
  • website — ссылка на GitHub проекта.

4. Далее нам нужен API Key вашего аккаунта на Bintray. Заходим на страницу вашего профайла:

5. Ищем кнопочку Edit и переходим по ней:

6. Теперь переходим по пункту меню API Key:

7. Сохраняем ключ в надежном месте.

8. Открываем терминал в Android Studio и выполняем:

9. Дожидаемся сборки и отгрузки библиотеки на сервер.

10. Теперь открываем сайт Bintray и ищем переход на страницу свежедобавленной библиотеки.

11. Пока что для того, чтобы подключить нашу библиотеку нужно добавить ссылку на репозиторий в build.gradle-файл проекта:

Какой-то лишний шаг получается, правда? Значить нужно это исправить 🙂

Добавление Android-библиотеки в jCenter

С недавних пор, репозиторием по умолчанию в Android считается jCenter (до этого был Maven Central). Благо, что добавление библиотеки в jCenter делается в один клик.

1. На странице нашей библиотеки переходим по ссылке add to jCenter и отправляем запрос на добавление. В течении суток библиотека будет добавлена в jCenter и вас оповестят соответствующим письмом на почту.

2. Теперь есть возможность подключить библиотеку через build.gradle модуля, добавив зависимость в dependencies:

Завершение

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

UPD: читайте о наших Android-библиотеках в новой статье!

Нужен MVP, разработка под iOS, Android или прототип приложения? Ознакомьтесь с нашим портфолио и сделайте заказ уже сегодня!

Russian (Pусский) translation by Ilya Nikov (you can also view the original English article)

Введение

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

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

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

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

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

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

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

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

На последнем экране выберите Не добавлять активность и нажмите Готово.

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

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

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

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

Шаг 3. Создание класса Java

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Чтобы взаимодействовать с Bintray в Andro >dependencies файла build.gradle вашего проекта.

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

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

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

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

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

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

Шаг 4: Создание JAR исходников

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

Шаг 5: Создание JAR Javadoc JAR

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

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

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

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

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

Шаг 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 , release и vcsTag .

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

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

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

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

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

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

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

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

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

По умолчанию Andro >repositories .

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

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

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

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

Заключение

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

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

Читайте также:  Dyson пылесос как его чистить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *