我开始用这个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识别这些库的方式是什么?
答案 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的方法:)