#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 и они будут видны только в рамках пакета. А лучше вынесите эти пакеты в разные модули проекта.
Комментариев нет:
Отправить комментарий