Как лучше всего обмениваться занятиями между приложением Wear и Android?

Я использую класс, который я сериализую в своем приложении Android Phone и десериализую в своем приложении Android Wear. Они оба находятся в одном проекте Android Studio и развернуты как один.

Как я могу разделить класс между ними, не имея копии класса в каждом пакете? Прямо сейчас я копирую/вставляю его, но есть ли способ включить его в оба приложения?

Структура каталогов:

./
    mobile/
           ...src/etc
    wear/
           ...src/etc

Как работать с общими классами?


person Robin Eisenberg    schedule 06.07.2014    source источник


Ответы (2)


Вы можете создать в проекте новый модуль "Android Library" и поместить туда свои общие классы.

Затем вы просто добавляете его как зависимость модулей Mobile и Wear (в Структуре проекта -> Зависимости -> Добавить -> Зависимость модуля). Таким образом, вы можете создавать/использовать экземпляры этих классов из обоих модулей.

person matiash    schedule 06.07.2014
comment
Ага, получилось :) Было создано много файлов только для того, чтобы включить несколько классов между двумя проектами. Я просто сравниваю с решением C++ в Visual Studio, где два проекта могут совместно использовать класс с помощью простого #include. В любом случае спасибо, это работает отлично. - person Robin Eisenberg; 06.07.2014
comment
@RobinEisenberg, хех, ты прав. В Java гораздо более тесная связь между файлами/каталогами и единицами компиляции. Однако в качестве бонуса при таком подходе класс должен быть скомпилирован только один раз (это как, скажем, библиотека на C/C++). - person matiash; 06.07.2014
comment
Должны ли мы удалить AndroidManifest.xml из этого библиотечного модуля? - person rudakovsky; 23.02.2016
comment
@rudakovsky Не обязательно. Манифесты объединены, поэтому может быть лучше оставить объявления там, где это уместно. Например, если классу в библиотеке требуется определенное разрешение, то нормально (я бы даже сказал лучше), если манифест библиотеки объявляет разрешение. Таким образом, он будет автоматически включен в любой модуль приложения, который на него ссылается. - person matiash; 29.03.2016
comment
Есть ли способ использовать это решение для совместного использования библиотеки модулей между двумя отдельными проектами AndroidStudio? - person GozzoMan; 28.05.2018
comment
Как насчет того, если у вас есть данные json, которыми вы хотите поделиться между несколькими приложениями? - person Mujtaba Mahmood; 04.09.2018
comment
@MujtabaMahmood В основном так же - вы можете включить его либо как актив, либо как необработанный ресурс модуля библиотеки и использовать его из модуля приложения. - person matiash; 05.09.2018

Обычно для совместного использования кодовой базы используется модуляризация. AndroidStudio использует module именование.

Модуль — это набор исходных файлов и настроек сборки, которые позволяют разделить проект на отдельные функциональные единицы.

Это может быть Android Library(.aar) или Java Library(.jar). В обоих случаях будет создан новый модуль с apply plugin: 'com.android.library' строкой в ​​build.gradle файле. Вы можете использовать его для размещения общего кода.

Чтобы включить/добавить этот модуль, вы должны использовать

File -> New -> Import Module...

Эта команда добавит всю необходимую информацию в файл settings.gradle и вы сможете использовать ее через

implementation project(':<module_name>')
person yoAlex5    schedule 23.09.2019