首页 > 解决方案 > 无法解析 Android Studio 中的模块类

问题描述

我有两个单独的 Android 项目 A 和 B。我希望在 A 中使用 B,但我不希望将其复制到 A。我只想使用它。

所以我将它添加到项目 A 中settings.gradle

include ':ProjectA', ':ProjectB'

project(':ProjectB').projectDir = new File('/dir/dir/ProjectB/')

同步 gradle 工作正常,但是当我清理和重建时,项目 A 无法解析项目 B 中的任何符号。

所以我在一个未解析的符号上 Alt-Enter 并单击“添加对模块项目 B 的依赖”,然后将以下内容添加到项目 A 的gradle.build文件中:

compile project(path: ':ProjectB')

但是 clean+build 也不起作用。

我试过改成

compile project(path: ':ProjectB', configuration: 'default')

implementation project(path: ':ProjectB')

但它们也不起作用。有任何想法吗?

使用 gradle 3.1.2,Android 3.1.2。Ubuntu 16.04 LTS。

输出

ProjectA/build.gradle   
Unable to resolve dependency for ':ProjectA@debug/compileClasspath': Could not resolve project :ProjectB.   
Unable to resolve dependency for ':ProjectA@debugAndroidTest/compileClasspath': Could not resolve project :ProjectB.    
Unable to resolve dependency for ':ProjectA@debugUnitTest/compileClasspath': Could not resolve project :ProjectB.   
Unable to resolve dependency for ':ProjectA@release/compileClasspath': Could not resolve project :ProjectB. 
Unable to resolve dependency for ':ProjectA@releaseUnitTest/compileClasspath': Could not resolve project :ProjectB. 

标签: android-studiogradlebuild.gradle

解决方案


又是什么噩梦。我可以解决这个问题的唯一方法如下,我相信这是正确的方法。

创建一个 Android 库(不是 Java 库,否则您不能使用 Android 函数),然后加载您的库类/文件,并使用适当的实现语句(即依赖项)设置您的 gradle。但是您需要在这里小心,因为 Android Studio (AS) 在同一个项目中创建了“应用程序”和“库”模块。因此,请确保将库类放在正确的模块中,否则它不会生成 AAR 文件(与 JAR 不同)文件供您在外部其他地方包含。构建项目后,您将在build/outputs/aar目录中找到 AAR 文件。

好的,现在您可以创建单独的应用程序,并将 AAR 文件用作依赖项。创建新的主项目后,转到项目结构并单击+左侧的操作以添加新模块。从菜单中选择 Import JAR/AAR,然后将选择器指向build上述文件夹中的 AAR 文件。单击确定返回主窗口。然后选择主应用程序模块,然后单击依赖项选项卡并单击+添加模块。从列表中选择 AAR 模块,然后单击 OK 退出。

系统现在应该可以识别您的类并且没有未定义的符号。这是完美的工作,我非常喜欢它,因为它使用了一个很好的紧凑 AAR 文件。


推荐阅读