Здравствуйте, в ходе разработки приложения под андроид возникла следующая проблема:
имеются java файлы которые предназначены для реализации логики для подключения к устройству типа1 они лежат в package Device1 (внутри этого пакета находятся также подпакеты), другие java файлы лежат в package Device2
В каждом пакете (Device1, Device2) имеются java файлы с одинаковым названием например Func. Пакеты Device1, Device2 должны работать не зависимо друг от друга. Т.е. файлы пакета Device1 не могут ссылаться на Func из пакета Device2 и наоборот.
Также есть еще пакет CommonConnection, который реализует первоначальное подключение к пакетам Device1, Device2. В этом случае пакет CommonConnection должен иметь доступ ко все остальным пакетам и Device1 и Device2.
Можно ли как-то запретить файлам из пакета Device1 ссылаться на файлы из пакета Device2 и наоборот, чтобы по ошибке при вводе автодополнения не ввести файл из чужого пакета, при этом чтобы общий пакет CommonConnection имел доступ и к файлам пакета Device1 и к файлам Device2 ?
Заранее благодарю всех за ответы.
Создал модули Device1, Device2, CommonConnection.
В build.gradle для CommonConnection ввел зависимости для
Device1, Device2 в итоге получил ошибку.
Резюмирую здесь решение моей задачи, возможно кому-то пригодиться в будущем:
1) Создаем 3 моудля CommonConnection, Device1, Device2. Нам необходимо, чтобы файлы в CommonConnection имели доступ в Device1, Device2. А Device1, Device2 были изолированы друг от друга, т.е. файл из Device1 не мог иметь доступ в Device2.
2) После создания модулей необходимо зайти в gradle для Device1 и внести следующие изменения:
**apply plugin: 'com.android.application'**
изменить на
apply plugin: 'com.android.library'
И в defaultConfig убрать строку
applicationId "com.bignerdranch.android.Device1"
3) Для Device2 нужно сделать тоже самое.
4) В gradle файле для CommonConnection нужно добавить строку
compile project(':Device1')
5) Далее нужно явно указать что нужно запускать первоначально именно активити модуля CommonConnection. Нажимаем на Select Run/Debug Configuration и выбираем модуль CommonConnection. Далее еще раз нажимаем на Select Run/Debug Configuration -> EditConfigurations.. ** в меню **Launch Options в строке Activity жмем на ... и выбираем активити для CommonConnection
в частности MainActivityCommonConnection
6) Теперь можно запустить проект и проверить.
Ответ
Ну просто не делайте эти классы public и они будут видны только в рамках пакета. А лучше вынесите эти пакеты в разные модули проекта.
Комментариев нет:
Отправить комментарий