Android Studio外部库

时间:2015-04-14 08:29:02

标签: android android-studio

我开始用这个IDE做一些项目,但我仍然发现了一些令人讨厌的情况,这些情况很容易通过eclipse解决,但我不知道如何在这里面对。

我正在为我的应用实现邮件发送功能。这必须对用户透明,所以我使用的是javax.mail。

为此,我下载了“activation.jar”,“additionnal.jar”和“mail.jar”文件,并将它们保存在libs文件夹中。

现在我正在创建自定义发件人类,它扩展了 javax.mail.Authenticator 。但它找不到 javax.mail 的导入,邮件显示为红色。我正在试图从libs导入它,但它找不到它们。

我还在gradle.build中包含了这个:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

我已经考虑过这样的几个问题,就是右键点击图书馆然后点击添加为图书馆,但这个选项不会出现给我。

那么,让Android Studio识别这些库的方式是什么?

enter image description here

3 个答案:

答案 0 :(得分:2)

我鼓励你使用像Sonatype Nexus这样的神器。在这里,您将从其他远程工件中部署和检索您的工件和工件。但目前可能只使用MavenCentral。

在您的顶级build.gradle中,您需要配置工件所在的存储库。

repositories {
    mavenCentral() //a public artifactory
    maven {
        url "https://your.privaterepo.com"
    }
}

在项目级别build.gradle中,您可以为javax.mail添加依赖项,例如

dependencies {
    compile 'javax.mail:mail:1.5.0-b01' // G:A:V
}

要查找工件的GAV坐标( G roup A rtifact V ersion),您可以使用google,这通常会指向您到http://mvnrepository.com/,你可以在gradle表示法中轻松获取依赖关系。

然后您将永远不需要手动下载工件,gradle将为您处理此问题。您需要做的就是声明存储库和依赖项。

为了从gradle部署人工制品,我在模块级build.gradle中使用目标uploadArchives

apply plugin: 'maven'
//noinspection GroovyMissingReturnStatement
uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: 'http://our.private.nexus/nexus/content/repositories/releases') {
                authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD);
            }
            snapshotRepository(url: 'http://our.private.nexus/nexus/content/repositories/snapshots') {
                authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD);
            }
            pom.groupId = "the.groupid.for.this.artifact"
            pom.artifactId = "artifactid"
            pom.version = "1.2.3"
        }
    }
}

答案 1 :(得分:1)

如果您已将库添加到lib中的src文件夹中。它不会起作用。

点击项目展示中的android并选择Project,将新文件夹设为libs,然后将所有第三方库添加到其中,之后您将右键单击它,将获得将其添加为库的选项。

添加后,您也不需要在gradle文件中写入。 Android Studio自动添加行。

答案 2 :(得分:0)

我通常使用import * .jar libs做一个技巧。将* .jar文件放入libs文件夹后。我删除了compile fileTree(dir: 'libs', include: ['*.jar'])compile fileTree(dir: 'libs', include: ['*.j'])中的一些字符,并将其重写为compile fileTree(dir: 'libs', include: ['*.jar'])。这是一种同步我的build.gradle的方法:)