Как создать и использовать библиотеку Android в существующем проекте - PullRequest
1 голос
/ 26 мая 2020

У меня есть существующий android проект project one, в который я хочу добавить функцию, скажем, SpecialToast. Вместо того, чтобы добавлять его напрямую в проект, я хочу создать эту функцию как android library, чтобы ее можно было использовать в других проектах project two.

Я немного запутался в процедуре создания.

Я прошел через https://developer.android.com/studio/projects/android-library и попытался создать библиотеку в project one, которая создает библиотеку.

New -> New module -> Android библиотека

какая процедура

  1. Создайте новое приложение android и в этом приложении создайте новую Android библиотеку.

  2. В Project one создайте новую android библиотеку.

Если вариант 2 верен, как только я создам библиотеку android в project one как я могу использовать его в project one

Если вариант 1 правильный, как я могу опубликовать sh это и легко протестировать с помощью project one

Спасибо R

Обновление enter image description here

1 Ответ

0 голосов
/ 26 мая 2020

Возможны оба варианта. Вы можете создать модуль библиотеки в отдельном проекте и собрать и экспортировать его оттуда (ваш вариант 1). Вы можете экспортировать свою библиотеку с помощью задачи оболочки gradle assemble. Например, если ваш библиотечный модуль называется brdroid, выполните это из папки root вашего проекта:

./gradlew brdroid:assembleRelease

Это создаст файл brdroid-release.aar в папке {project root}/brdroid/build/outputs/aar. Затем вы можете скопировать файл aar в другой проект или загрузить его в менеджер пакетов. Либо вручную, либо, например, с помощью maven publi sh plugin .

Если вы загрузите его в диспетчер пакетов, вы можете добавить свою библиотеку как удаленную зависимость, как и с другими библиотеки, используя implementation или api + имя вашего пакета, идентификатор артефакта и номер версии.

Для целей отладки проще использовать библиотечный модуль в проекте напрямую (это ваш вариант 2). Это означает, что модуль приложения и модуль библиотеки находятся в одном проекте бок о бок. В этом примере, если оба модуля находятся в одном проекте, вам необходимо добавить модуль brdroid в качестве зависимости к project one, добавив его в файл project one build.gradle:

implementation project(':brdroid')

Обратите внимание, что вы все еще можете экспортировать свою библиотеку как файл aar и опубликовать sh его, как в варианте 1.

И в этом сценарии все еще возможно сохранить модуль библиотеки в отдельном проекте и репозитории. и добавьте его в git -репозиторий и проект вашего приложения, используя git -подмодули . Это немного больше.

Использование git подмодулей

Пример использования git -подмодулей может выглядеть следующим образом: Давайте рассмотрим, что у нас есть два отдельных проекта git репозиториев:

  • My Library, в котором есть только модуль библиотеки brdroid android
  • MyApplication, в котором есть только модуль приложения app android:

My Library project structure MyApplication project structure

Чтобы добавить репозиторий MyLibrary как git -подмодуль в репозиторий MyApplication git, выполните это из папки MyApplication root:

git submodule add -b master https://{url-to-My-Library-git-repository}

-b master только указывает, какую ветвь отслеживать. Вы можете изменить его.

Это клонирует My Library в новую подпапку, которая не отслеживается репозиторием MyApplication. Он также создает два изменения, которые вам нужно зафиксировать, чтобы сделать их постоянными.

Затем откройте settings.gradle из папки MyApplication root и добавьте модуль brdroid в проект MyApplication, изменение первой строки с:

include ':app'

на

include ':app', 'MyLibrary:brdroid'

MyLibrary - это просто папка, в которой находится модуль brdroid.

Также добавьте brdroid как зависимость от модуля app, добавив это в файл build.gradle модуля app:

implementation project(':MyLibrary:brdroid')

Теперь ваш результат должен выглядеть так:

Result in Android Studio

Теперь app и brdroid находятся в одном проекте, но разработка brdroid происходит в отдельном репозитории git.

...