1

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

  1. модуль приложения (который по умолчанию моего приложения модуля)

  2. и добавил другой модуль библиотеки.

Теперь в модуле приложения есть много классов java. Я хочу получить доступ к .Java class модуля приложения в библиотечном модуле.

Модуль приложение имеет класс DatabaseHelper в пакете АБВ

Теперь я хочу импортировать класс DatabaseHelper в Library модуле.

DatabaseHelper не распознается android.

Вопросы,

Можно ли импортировать класс из модуля приложения к другому модулю?

любым другим способом.

MyFiles

build.gradle (приложение)

compile project(':materialList') 

setting.gradle

include ':app', ':Library' 

ответ

1

Нет, нет никакой возможности. Переосмыслите свой дизайн. Может быть, переместите DatabaseHelper в проект library?

В вашей конструкции будет круговая зависимость между модулем app и модулем library.

Целью других модулей является отделить полностью независимые фрагменты кода и переместить их на внешнее место. И используйте их в других модулях.

+0

Хорошо ли заменить весь модуль библиотеки в приложении? Это занимает слишком много головной боли. –

1

Можно ли импортировать класс из модуля приложения в другой модуль?

Это будет невозможно, так как это создаст круговую зависимость.

Однако есть образец, который может быть использован в этом сценарии:

  • Определить тип данных: DatabaseHelperContent в library модуле
  • определить интерфейс DatabaseHelperI в модуле библиотеки реализатор из которых должен предоставлять данные.
  • Создать класс DatabaseHelperImpl, реализующий интерфейс DatabaseHelperI, предоставляя данные (этот класс в app модулы)
  • Инициализировать интерфейс как экземпляр класса ABC, обращаясь к ней в классе Application, так что данные из класс может динамически передаваться в подмодуль.

Это станет еще проще с некоторой зависимостью инъекции рамками как Dagger, где вы можете просто указать поставщик интерфейса в класс @Module и использовать инъекционные данные от общего поставщика везде.

Смежные вопросы