1

我有一个包含两个模块的项目;app 模块和我包含在mainapp 模块中的另一个模块,让我们将此模块称为 myModule。

我想在 myModule 中使用 SphericalUtil,它包含在 android-maps-utils 中,所以我已经添加compile 'com.google.maps.android:android-maps-utils:0.5+'到属于myModule.

奇怪的是,我无法导入任何属于 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"
4

1 回答 1

1

您需要使用 Android 模块插件而不是 java 插件。正如以下文档所述:

要在项目中创建新的库模块,请执行以下操作:

  1. 单击文件 > 新建 > 新模块。

  2. 在出现的 Create New Module 窗口中,单击 Android Library,然后单击 Next。还有一个创建 Java 库的选项,它构建一个传统的 JAR 文件。虽然 JAR 文件对许多项目都很有用——尤其是当你想与其他平台共享代码时——它不允许你包含 Android 资源或清单文件,这对于 Android 项目中的代码重用非常有用。因此,本指南侧重于创建 Android 库。

3.为您的库命名并为库中的代码选择最低 SDK 版本,然后单击完成。

要解决 AndroidManifest.xml 问题,您可以使用如下内容:

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.your.library"/>
于 2018-02-20T10:33:11.803 回答