如何从库中访问 :app 类?

Posted

技术标签:

【中文标题】如何从库中访问 :app 类?【英文标题】:How to gain access to :app class from library? 【发布时间】:2020-08-07 15:35:57 【问题描述】:

我有一个案例,我需要从库项目中访问 :app 项目类。 (不是 res,java 类) 我已经搜索过,答案是在库 Gradle 文件中实现 :app ,如下所示:

implementation project(':app')

然后在 Gradling 之后我得到了这些错误:

ERROR: Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve project :app.
ERROR: Unable to resolve dependency for ':app@debugandroidTest/compileClasspath': Could not resolve project :app.
ERROR: Unable to resolve dependency for ':app@debugUnitTest/compileClasspath': Could not resolve project :app.

然后我再次搜索,我认为这可能是相互实现两个项目的循环,然后我添加第三个 android 库作为 :app 和 :myLib 的连接器,即使错误是相同的。实现两个 android 库,每个库都不是问题,即使是循环类型,但使用主应用程序目录...... 所以有什么帮助吗? 我必须再次这样做,并且没有其他方法,例如,使用抽象类或......我的情况是特殊的,因为这不是普通的应用程序,并且将成为一个 android 框架而不仅仅是一个应用程序。 谢谢。

【问题讨论】:

【参考方案1】:

您可能是对的,这可能是 Circular Dependency 的情况。但是将 Android application 作为 Dependencyandroid library 是没有意义的。

更好的解决方案是将 extract 那些您想要使用的文件从 app 放入单独的 new module >,将此新模块标记为 android-library,并将此 new module 实现到您要访问这些新隔离类的空间中。

【讨论】:

问题是我的项目是 android 的框架,我需要始终从 android 项目中获取一个类,并且知道我的“应用程序正在从库而不是 :app 目录运行 MainAcrtivity”所以我真的需要访问它。有什么办法吗? 我不明白你说你的应用是一个框架。 Android 本身就是一个框架。将您要在 app 模块中使用的类隔离到不同的模块中,仍然可以在 app 中使用。提取它们将解决您将应用模块作为依赖项的问题。 我们正在制作一个具有新想法和新 java android 方式的框架,但对于 android 框架本身,就像 Express 是 Node 一样(我知道 Node 不是框架,但是)。所以对于我们的想法,我们需要访问类。无论如何,谢谢。 请描述在这种情况下模块化应用程序将如何工作? 正确,该应用程序将只运行一个 Activity(我们的自定义 Activity),但重点是在所有屏幕中,我们只运行了一个,并且为了更改视图,我们只是重新创建了一个 Activity 和再次设置内容查看。所以为什么?由于我们得到的非常重要的一点,我可以调用临时变量,从每个屏幕访问变量,利用我们认为的代码和许多许多功能,并且在没有此路由的情况下在最后一个版本中运行良好......但是有了这个,它将向前迈出一大步。

以上是关于如何从库中访问 :app 类?的主要内容,如果未能解决你的问题,请参考以下文章

EaselJS:从库中实例化对象后如何访问子项

Arduino/C++:从库中访问特定的结构头文件

如何通过 MediaElement 从库中播放文件?

如何在 Swift 中使用 URL 从库中获取图像? [复制]

iPhone:如何获取从库中选择的视频时长?

如何从库中动态添加对象?