如何在Android Studio/IntelliJ中导入Maven依赖?

109

我使用Android Studio中的默认向导创建了一个新的Android项目。编译并将应用程序部署到我的设备上,一切都很好。

现在我想导入一个可在Maven上使用的外部库。(http://square.github.io/picasso/)。我进入模块属性,添加了一个Maven库。它在依赖项列表中正确显示。此外,它还出现在编辑器中,并且可以在代码中正确使用。

但是,在编译时,我收到Gradle错误消息:无法找到类。

有什么想法吗?

6个回答

87

我以springframework的android artifact作为例子

打开build.gradle文件

然后在与apply plugin: 'android'同级的位置添加以下内容

apply plugin: 'android'

repositories {
    mavenCentral()
}

dependencies {
   compile group: 'org.springframework.android', name: 'spring-android-rest-template', version: '1.0.1.RELEASE'
}

你也可以使用这种标记法来指定Maven构件。

compile 'org.springframework.android:spring-android-rest-template:1.0.1.RELEASE'

如果您的IDE没有显示JAR文件和其依赖项,请尝试重新启动IDE(这种情况经常发生)

这是您提供的可行示例

buildscript { 
    repositories { 
        maven { 
            url 'repo1.maven.org/maven2'; 
        } 
    } 
    dependencies { 
        classpath 'com.android.tools.build:gradle:0.4' 
    } 
} 
apply plugin: 'android'

repositories {
    mavenCentral()
}

dependencies { 
    compile files('libs/android-support-v4.jar') 
    compile group:'com.squareup.picasso', name:'picasso', version:'1.0.1' 
} 
android { 
    compileSdkVersion 17 
    buildToolsVersion "17.0.0" 
    defaultConfig { 
        minSdkVersion 14 
        targetSdkVersion 17 
    } 
} 

1
我尝试了一下,这是我的build.gradle文件:buildscript { repositories { maven { url 'http://repo1.maven.org/maven2' } } dependencies { classpath 'com.android.tools.build:gradle:0.4' } } apply plugin: 'android'dependencies { compile files('libs/android-support-v4.jar') compile group:'com.squareup.picasso', name:'picasso', version:'1.0.1'}android { compileSdkVersion 17 buildToolsVersion "17.0.0"defaultConfig { minSdkVersion 14 targetSdkVersion 17 }}错误:找不到com.squareup.picasso:picasso:1.0.1。 - munkay
1
@munkay 我更新了答案,并提供了一个已更正的 build.gradle,与您的评论相匹配。 - user1568967
18
重点是重新启动IDE。这个版本的IntelliJ没有捕捉到更改。 - Jimmy2Times
为什么Android Studio不默认执行这个操作?!?!是Bug吗? - arinte
1
关键部分是重新启动IDE。天哪,这是2016年...但还是谢谢Jimmy2Times。 - Guy Moreillon
显示剩余9条评论

75

从版本0.8.9开始,Android Studio默认支持Maven Central Repository。因此,要添加外部maven依赖项,您只需要编辑模块的build.gradle文件,并在依赖项部分插入一行,如下所示:

dependencies {

    // Remote binary dependency
    compile 'net.schmizz:sshj:0.10.0'

}

你会看到一个消息,类似于“立即同步...” - 点击它并等待Maven存储库及其所有依赖项被下载。状态栏底部将显示一些消息,告诉您有关下载的情况。完成后,导入的JAR文件及其依赖项将在项目浏览器窗口中的外部存储库树中列出,如下图所示:

enter image description here

这里还有一些进一步的解释:http://developer.android.com/sdk/installing/studio-build.html


7
没有这个就无法工作:repositories { mavenCentral() } (注:该段代码是 Gradle 构建项目时引入 Maven 仓库的配置,意为“没有 Maven 中央仓库就无法正常构建项目”。) - Johannes
1
有时我们不能简单地使用依赖项,添加外部依赖项会起作用,示例在这里... 仓库 { maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases/' } } ... 编译 'com.google.code.ksoap2-android:ksoap2-android:3.6.0' - Nandha

9
在Android Studio Bumblebee版本中,Maven声明应该放在settings.gradle文件中,而不是像之前的AS版本那样放在build.gradle文件中。
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven {
           ....
        }
    }
}

这个救了我的一天,谢谢!猜想这就是最新版的Android Studio的工作方式。 - Akinyemi Jamiu

9

Android Studio 3

提到 Maven Central 的回答已经过时了,因为现在 Android Studio 使用 JCenter 作为默认的仓库中心。您项目的 build.gradle 文件应该类似于以下内容:

repositories {
    google()
    jcenter()
}

只要开发人员在Maven仓库中有他们的Picasso,那么你只需要在应用程序的build.gradle文件的依赖项部分添加一行即可。
dependencies {
    // ...
    implementation 'com.squareup.picasso:picasso:2.5.2'
}

5
  1. 在文件>设置>Gradle>全局Gradle设置中取消选中"离线工作"
  2. 重新同步项目,例如通过重新启动Android Studio
  3. 同步完成后可以再次选中该选项以进行离线工作。

0

尝试使用itext。将最新版本的依赖项添加到您的build.gradle中,截至帖子发布时。

注意:适用于 Android 的特殊版本,后缀为“g”:

dependencies {
    compile 'com.itextpdf:itextg:5.5.9'
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接