#android #access #package
Здравствуйте, в ходе разработки приложения под андроид возникла следующая проблема:
имеются 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) Теперь можно запустить проект и проверить.
Ответы
Ответ 1
Ну просто не делайте эти классы public и они будут видны только в рамках пакета. А лучше вынесите эти пакеты в разные модули проекта.
Комментариев нет:
Отправить комментарий