我有一个包含两个模块的项目; 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"
答案 0 :(得分:1)
您需要使用Android模块插件而不是java插件。正如following documentation所说:
要在项目中创建新的库模块,请按以下步骤操作:
点击文件>新>新模块。
- 醇>
在出现的“创建新模块”窗口中,单击“Android库”,然后单击“下一步”。还有一个创建Java的选项 库,构建传统的JAR文件。 虽然是JAR文件 对许多项目很有用 - 特别是当你想与之共享代码时 其他平台 - 它不允许您包含Android资源或 清单文件,对于Android中的代码重用非常有用 项目。因此本指南重点介绍如何创建Android库。
3.为您的库命名并为库中的代码选择最低SDK版本,然后单击Finish。
要解决AndroidManifest.xml问题,您可以使用以下内容:
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.your.library"/>