В чем преимущество использования библиотечного модуля в Android Studio? - PullRequest
0 голосов
/ 15 апреля 2020

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

Не могли бы вы рассказать мне о преимуществах использования библиотечного модуля в Android Studio?

Какой код мне нужен, чтобы поместить его в библиотеку?

И еще, оба модуля app и lib используют один и тот же nameapce в примере кода, Не знаю, подходит ли это, подскажите?

Изображение A

enter image description here

Ответы [ 2 ]

2 голосов
/ 15 апреля 2020

Модуль библиотеки дает вам две возможности для создания библиотеки Android и Java.

  1. Android библиотечный модуль -> Android библиотека компилируется в файл Android Archive (AAR), который можно использовать в качестве зависимости для Android модуль приложения. Он позволяет добавлять android указанные c компоненты, такие как ресурсы и файл манифеста, что позволяет объединять общие ресурсы, такие как макеты и элементы рисования, в дополнение к Java классам и методам.

  2. Java Библиотека -> Создает файл JAR. Файл JAR полезен для многих проектов, особенно если вы хотите поделиться кодом с другими платформами. Но он не позволяет включать ресурсы Android или файлы манифеста, что очень полезно для повторного использования кода в проектах Android. Поэтому, когда вам не нужны какие-либо android указанные ресурсы c в библиотеке, вы должны создать библиотеку java.

Библиотечные модули полезны для проектов: -

  1. Когда вы создаете несколько приложений, которые используют одни и те же компоненты, такие как действия, службы, или макеты пользовательского интерфейса.
  2. Когда вы создаете приложение, имеющее несколько вариантов APK, например бесплатную и платную версию, и вам нужны одни и те же основные компоненты в обоих.

Цитируется developer. android .com

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

PS -> Если вы знакомы с Чистая архитектура , идея большинства шаблонов проектирования программного обеспечения - Separation of concern В чистой архитектуре проект делится на несколько модулей. Когда вы реализуете чистую архитектуру в android, вы увидите, что некоторые из модулей, которые вы можете создать как Java library, такие как domain module. Создание модуля действительно полезно, чтобы следовать принципам повторного использования и SOLID и инверсии контроля.

0 голосов
/ 15 апреля 2020

Во-первых, не смотрите на имя пакета, объявленное в каталоге java. Посмотрите в файл манифеста. Вы можете видеть, что эти модули имеют другое имя пакета. Это означает, что все модули в проекте должны иметь различное имя пакета.

enter image description here

Что касается вашего вопроса, в чем преимущество именования модуля библиотеки как lib?

Нет никакой пользы. Некоторым людям нравится имя lib, поэтому они могут легко различать модуль demo и library . Однако использование lib в качестве имени модуля библиотеки требует добавления дополнительной конфигурации в lib/build.gradle, то есть archiveBaseName. Этот атрибут Gradle переименует JAR / AAR с lib.aar на work-runtime.aar, поэтому люди могут использовать его следующим образом:

implementation "androidx.work:work-runtime:$work_version"

Если archiveBaseName не установлен, люди будут использовать его следующим образом:

implementation "androidx.work:lib:$work_version"

В нашем случае возьмем мою библиотеку с открытым исходным кодом в качестве примера MaterialPreference . Я использовал имя lib в этом проекте, но теперь я думаю, что lib не является хорошим именем модуля. Использование materialpreference в качестве имени модуля удалит дополнительную конфигурацию archiveBaseName. Поэтому я чувствую, что это проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...