无法在模块中使用 android-maps-utils
Posted
技术标签:
【中文标题】无法在模块中使用 android-maps-utils【英文标题】:Cannot use android-maps-utils in module 【发布时间】:2018-07-30 15:09:12 【问题描述】:我有一个包含两个模块的项目; main
app 模块和我包含在 app 模块中的另一个模块,让我们将此模块称为 myModule。
我想在 myModule 中使用 SphericalUtil,它包含在 android-maps-utils 中,所以我在属于 myModule
的 build.gradle 文件中添加了 compile 'com.google.maps.android:android-maps-utils:0.5+'
。
奇怪的是我无法导入任何属于 android-maps-utils 库的类,它似乎只是不存在于 myModule 中,即使我没有收到 gradle 错误。当我在属于 myModule 的任何类中键入 SphericalUtil 时,我会收到对“Add library android-maps-utils to classpath
”的建议,但它似乎没有做任何事情。
当我在应用程序模块 gradle 文件中添加完全相同的行时,它似乎确实有效。我可以在属于应用模块的任何类中输入SphericalUtil
,Android Studio 会识别该类并允许我自动导入它。
我也尝试过使用不同的库,例如okhttp,但没有问题,我可以在 myModule 中自动导入并使用它,所以问题似乎与android-maps-utils
相关。也许按照将库添加到类路径的建议破坏了事情?我真的没有猜测,所以任何帮助都是真的。
如果有帮助,myModule gradle 文件如下所示:
apply plugin: 'java-library'
repositories
maven url "https://maven.google.com"
dependencies
implementation fileTree(dir: 'libs', include: ['*.jar'])
// https://mvnrepository.com/artifact/com.google.android/android
compileOnly group: 'com.google.android', name: 'android', version: '4.1.1.4'
compile 'com.google.maps.android:android-maps-utils:0.5+'
compile 'com.squareup.okhttp3:okhttp:3.8.1'
compile files('libs/experiment.resultlogger-0.0.2.jar')
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
【问题讨论】:
您是否将 MyModule 添加到 settings.gralde 文件中?像这样:包括':MyModule' 是的,我做到了。它说:include ':app', ':myModule'
您能否发布您的 MyModule build.gralde 文件?
刚刚添加到我原来的帖子中
尝试将此添加到 gradle 文件的顶部,然后同步/构建项目:应用插件:'com.android.library',它可能需要 android ... 的东西跨度>
【参考方案1】:
您需要使用 Android 模块插件而不是 java 插件。正如following documentation 所说:
要在您的项目中创建新的库模块,请执行以下操作:
单击文件 > 新建 > 新模块。
在出现的创建新模块窗口中,单击 Android 库,然后单击下一步。还有一个创建 Java 的选项 库,用于构建传统的 JAR 文件。 当一个 JAR 文件是 对许多项目很有用——尤其是当您想与他人共享代码时 其他平台——它不允许你包含 Android 资源或 manifest 文件,这对于 Android 中的代码重用非常有用 项目。 所以本指南的重点是创建 Android 库。
3.为您的库命名并为库中的代码选择最低 SDK 版本,然后单击“完成”。
要解决 AndroidManifest.xml 问题,您可以使用以下内容:
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.your.library"/>
【讨论】:
如果我将其创建为 Android 库,我可以在原生 Java 应用程序中使用该库吗?因为我也想在非 Android 项目中使用该库。 您不能将 android 库用于 Java 应用程序。您也不能将android-maps-utils
用于Java 应用程序,因为它仅适用于Android 应用程序。以上是关于无法在模块中使用 android-maps-utils的主要内容,如果未能解决你的问题,请参考以下文章
尝试在 Angular 9 中使用共享模块时出错,使我的组件无法识别我的材料模块
Android-无法在单独的模块中使用 org.greenrobot.eventbus