Как создать модульное android приложение

421
03 июля 2017, 17:06

Например, приложение делится на три модуля: Core, Personal, Client; В Core определены основные библиотеки и методы которые будут переиспользовать остальные модули. Personal и Client - это модули со своим набором activity и бизнес логикой. При авторизации пользователя выбирается, какой модуль использовать. Подскажите, как разрешить зависимости между модулями, а так же каким образом может происходить выбор модуля в зависимости от триггера у пользователя?

Answer 1

Создание модуля (библиотеки)

Для создания модуля в Android Studio выбираете

 File > New > New Module

Далее есть 2 варианта. Если вы планируете создать «чистую» java-библиотеку, в качестве типа указывайте Java Library, в итоге код такой библиотеки скомпилируется в JAR файл. Это удобно, так как вы сможете использовать ее не только в Android приложениях. Если же вы собираетесь использовать android-специфичные вещи и вам понадобятся классы из пакетов android.*, то создавайте Android Library, которая при компиляции собирается в AAR файл. В данном случае вам понядобится последний вариант.

ВАЖНО: В minSDKVersion (файлы build.gradle модулей) приложения должен совпадать или быть больше, чем указанный в модуле библиотеки.Указанные buildToolsVersion должны быть установлены в Android-SDK. Каждый модуль библиотеки генерирует свой класс ресурсов (*.R.class). Когда Android библиотеки добавляются в проект и происходит его сборка, то их ресурсы сливаются, что может привести к конфликтам. Поэтому в документации определены следующие соглашения:

  • Если ID ресурса приложения совпадает с ID ресурса в библиотеке, то используется ресурс приложения
  • Если ID ресурса совпадает в разных библиотеках, то используется ресурс библиотеки, которая указана первой в списке зависимостей (находится выше в блоке dependecies)
  • Для избежания описанных выше конфликтов рекомендуется использовать префикс или другую последовательную схему именования ресурсов, которая будет уникальна для каждого из модулей (или уникальна для всего приложения вцелом)

Подключение Android библиотеки

Подключаются Android библиотеки как зависимости (если библиотека была создана как отдельный проект в AndroidStudio). Тут есть так же 2 варианта:

1.Либо добавить скомпилированный AAR (или JAR) файл:

- File > New Module 
- Import .JAR/.AAR Package > Next
- вводите путь до ARR (или JAR) файла > Finish

2.Либо импортировать библиотеку из исходников:

- File > New > Import Module 
- вводите путь до директории, в которой находятся исходники библиотеки > Finish

ВАЖНО: убедиться, что имя Android библиотеки было добавлено в settings.gradle

include ':app', ':core', ':personal', ':client'

и появилась в блоке dependencies файла build.gradle приложения

dependencies {
    compile project(":core")
    compile project(":personal")
    compile project(":client")
}

Android библиотеки могут содержать в себе ресурсы, другие JAR библиотеки, собственный AndroidManifest.xml.

Структура скомпилированной Android библиотеки

Скомпилированная Android библиотека представляет собой обычный zip архив с расширением .arr, который содержит следующие обязательные файлы и директории:

  • /AndroidManifest.xml
  • /classes.jar
  • /res/
  • /R.txt

и необязательные:

  • /assets/
  • /libs/name.jar
  • /jni/abi_name/name.so (где abi_name один из поддерживаемых Android ABIs)
  • /proguard.txt
  • /lint.jar
READ ALSO
JavaFX BlendMode

JavaFX BlendMode

Создал макет для простого калькулятораДля создания наложения общего градиента на некоторые элементы использовал следующий код :

310
Путь к изображению Java

Путь к изображению Java

Здравствуйте! Есть игра на Java, с использованием картинок

195
Как применить цикл к программе и остановить ее одним символом?

Как применить цикл к программе и остановить ее одним символом?

Как сделать чтобы программа запрашивала ввод номера месяца до тех пор, пока пользователь не введёт символ ‘q’

183
Как взять строку из ресурсов? [дубликат]

Как взять строку из ресурсов? [дубликат]

На данный вопрос уже ответили:

159