不能在模块中使用android-maps-utils

时间:2018-02-20 09:44:38

标签: java android gradle android-maps-utils

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

我想在myModule中使用SphericalUtil,它包含在android-maps-utils中,所以我将compile 'com.google.maps.android:android-maps-utils:0.5+'添加到属于myModule的build.gradle文件中。

奇怪的是我无法导入属于android-maps-utils库的任何类,它似乎在myModule中不存在,即使我没有得到gradle错误。当我在属于myModule的任何类中键入SphericalUtil时,我得到“Add library android-maps-utils to classpath”的建议,但它似乎没有做任何事情。

当我在app模块gradle文件中添加完全相同的行时,它似乎确实有效。我可以在属于app模块的任何类中输入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"

1 个答案:

答案 0 :(得分:1)

您需要使用Android模块插件而不是java插件。正如following documentation所说:

  

要在项目中创建新的库模块,请按以下步骤操作:

     
      
  1. 点击文件>新>新模块。

  2.   
  3. 在出现的“创建新模块”窗口中,单击“Android库”,然后单击“下一步”。还有一个创建Java的选项   库,构建传统的JAR文件。 虽然是JAR文件   对许多项目很有用 - 特别是当你想与之共享代码时   其他平台 - 它不允许您包含Android资源或   清单文件,对于Android中的代码重用非常有用   项目。因此本指南重点介绍如何创建Android库。

  4.         

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

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

<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.your.library"/>