android-studio - 无法解析 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 库(不是 Java 库,否则您不能使用 Android 函数),然后加载您的库类/文件,并使用适当的实现语句(即依赖项)设置您的 gradle。但是您需要在这里小心,因为 Android Studio (AS) 在同一个项目中创建了“应用程序”和“库”模块。因此,请确保将库类放在正确的模块中,否则它不会生成 AAR 文件(与 JAR 不同)文件供您在外部其他地方包含。构建项目后,您将在build/outputs/aar
目录中找到 AAR 文件。
好的,现在您可以创建单独的应用程序,并将 AAR 文件用作依赖项。创建新的主项目后,转到项目结构并单击+
左侧的操作以添加新模块。从菜单中选择 Import JAR/AAR,然后将选择器指向build
上述文件夹中的 AAR 文件。单击确定返回主窗口。然后选择主应用程序模块,然后单击依赖项选项卡并单击+
添加模块。从列表中选择 AAR 模块,然后单击 OK 退出。
系统现在应该可以识别您的类并且没有未定义的符号。这是完美的工作,我非常喜欢它,因为它使用了一个很好的紧凑 AAR 文件。
推荐阅读
- javascript - React 可排序树不尊重 treeIndex 顺序
- python - 我如何解决python中的ModuleNotFoundError?
- xcode - React Native Xcode 无法构建没有 Rosetta 的 m1 芯片
- php - 如果单词长于 2 个字符,则在空格上拆分字符串
- c# - Identity Server4 在部署到生产时出现“invalid_grant”错误,但在 localhost 上工作正常
- html - 无法将具有透明背景的 .png 或任何图片添加到 HTML 页面
- python - 每次我运行我的代码时,有没有办法将不同的文本文件上传到 python?
- javascript - 重定向 URL 不适用于 Vue-MSAL
- r - R:ALTREP 可以为 Rcpp::XPtr 定义序列化程序吗?
- python - 如果没有参数或没有第二个参数,则 ctx.send 没有参数