无法在模块中使用 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的主要内容,如果未能解决你的问题,请参考以下文章

无法在内核模块 makefile 中使用通配符

尝试在 Angular 9 中使用共享模块时出错,使我的组件无法识别我的材料模块

Android-无法在单独的模块中使用 org.greenrobot.eventbus

无法在库模块中使用本地.aar文件

无法在Snakemake规则中使用conda环境导入python模块

python模块基础之getpass模块(pycharm中无法使用。)