Страницы

Поиск по вопросам

четверг, 15 ноября 2018 г.

Запрет доступа файлам одного пакета к файлам другого пакета

Здравствуйте, в ходе разработки приложения под андроид возникла следующая проблема:
имеются 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 и они будут видны только в рамках пакета. А лучше вынесите эти пакеты в разные модули проекта.

Комментариев нет:

Отправить комментарий