如何从Android中的库类访问应用程序模块类?

Har*_*sar 4 android android-build build.gradle android-gradle-plugin android-gradle-2.2

我在单个android项目中创建了两个模块。

  1. 应用模块(默认为我的应用模块)

  2. 和另一个添加的库模块。

现在,应用程序模块具有许多Java类。我想访问.Java class库模块中的应用程序模块。

模块应用DatabaseHelper在包xyz中有一个类

现在我想DatabaseHelperLibrary模块中导入类。

DatabaseHelper 无法被android识别。

问题,

是否可以将Class从应用程序模块导入到另一个模块?

任何其他方式。

我的文件

build.gradle(应用程序)

compile project(':materialList')
Run Code Online (Sandbox Code Playgroud)

setting.gradle

include ':app', ':Library'
Run Code Online (Sandbox Code Playgroud)

pre*_*mal 5

是否可以将Class从应用程序模块导入到另一个模块?

这将是不可能的,因为这将创建循环依赖。

但是,在这种情况下可以使用一种模式:

  • 定义数据类型:library模块中的DatabaseHelperContent
  • 在库模块中定义一个接口DatabaseHelperI,该接口的实现者应提供数据。
  • 创建一个实现DatabaseHelperI接口的DatabaseHelperImpl类,并提供数据(此类在app模块中)
  • 将接口初始化为类ABC的实例,同时在Application类中对其进行引用,以便可以将来自该类的数据动态传递给子模块。

使用某些依赖注入框架(例如Dagger),这将变得更加简单,您可以在@Module类中指定接口的提供程序,并在各处使用从公共提供程序注入的数据。


R. *_*ski 4

不,没有办法。重新思考你的设计。也许进入DatabaseHelper项目library

app在您的设计中,模块与模块之间会存在循环依赖关系library

其他模块的目的是分离完全独立的代码片段并将它们移动到外部位置。并在其他模块中使用它们。