Разница между библиотекой Android и библиотекой Java в Android Studio

введите описание изображения здесь

При создании нового модуля в Android Studio мы можем выбирать между библиотекой Android и библиотекой Java. Поработав с обоими, я понял, что Android Library имеет доступ к ресурсам Android, а Java Library имеет доступ только к ресурсам Java.

Таким образом, создание библиотеки Java в Android Studio похоже на создание новой библиотеки в обычной среде разработки Java, такой как Eclipse. (Кажется, это даже дает нам доступ к RMI, который Android не поддерживает.)

Это правильно, есть ли еще какие-то отличия, о которых следует знать?


person Daniel    schedule 13.01.2015    source источник


Ответы (3)


Как говорится в небольшом описании каждого типа проекта, библиотека Android - это просто еще один проект приложения Android, часто называемый модулем, а библиотека Java - это другое слово для проекта Java. Единственная разница между module и project заключается в сложности. Взгляните на это красивое описание от intellij о модулях и о том, чем они отличаются от:

Модульная структура проекта

Эта функция идеально подходит для сложных проектов с множеством внутренних зависимостей, особенно для проектов J2EE. Модуль - это отдельная логическая часть проекта, которая включает ваши рабочие источники, библиотеки, ссылку на целевой Java SDK и т. Д. Он может быть скомпилирован, запущен или отлажен как отдельный объект.

введите описание изображения здесь

Проект может состоять из одного или нескольких модулей. Модули могут зависеть друг от друга. Модули и библиотеки можно легко использовать в нескольких проектах.

источник

Это также стоит прочитать.

person Ojonugwa Jude Ochalifu    schedule 13.01.2015

Библиотека Android - это aar, а библиотека java - это jar. С технической точки зрения оба являются банками, но их структурный состав немного отличается друг от друга. Например, aar выглядит так:

res  <android resources dir>
values
AndroidManifest.xml
classes.jar
    <classpath structure>
         <.class's>
R.txt

Библиотека java выглядит так:

<classpath structure>
     <.class's>
META-INF

Как уже упоминалось, библиотека java не может включать в себя какие-либо ресурсы Android, такие как макеты, значения, цвета, стили. Библиотека Android может включать ресурсы Android, но не может содержать необработанные ресурсы Android (то есть все, что вы помещаете в папку ресурсов). Разработчик также несет ответственность за то, чтобы имена ресурсов не конфликтовали друг с другом. Разработчики Android рекомендуют назначать уникальные префиксы для имен ресурсов в каждой библиотеке Android. Библиотеки Java не могут ссылаться на какие-либо классы SDK для Android, такие как android.content.Context и т. Д.). Есть несколько уловок, которые вы можете сделать, чтобы обойти это последнее ограничение, но это включает в себя преобразование aar в jar. Это можно сделать, если вы не используете ресурсы Android в файле aar. Причина, по которой кто-то может захотеть выполнить это преобразование, заключается в том, чтобы у вас была зависимость "compileOnly". В настоящее время у вас не может быть зависимости compileOnly от библиотеки aar, но вы можете использовать библиотеку jar. Этот метод используется разработчиками приложений OSGI, которым необходимо ссылаться на интерфейсы, содержащие классы Android SDK. Команда разработчиков Android получила нерешенный запрос на изменение этого ограничения compilieOnly.

person Tom Rutchik    schedule 17.07.2018

Библиотека Android - это в прошлом «проект библиотеки Android».

Это просто андроид-модуль, который можно включить в ваш проект. у него есть ресурсы Android, как вы говорите, и ваш собственный проект также имеет доступ к включенным ресурсам библиотеки (например, стилям или макетам).

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

person Kirill Shalnov    schedule 13.01.2015