Android Studio:将jar添加为库?
我正在尝试使用新的Android Studio,但似乎无法正常工作 我正在使用Gson库来序列化/反序列化JSON对象。但是这个库不知怎的没有包含在构建中 我创建了一个新项目,只需一个main活动。 复制了/libs文件夹中的gson-2.2.3.jar,并将其添加为库依赖项(右键单击->添加为库)。这包括android studio中的jar,因此可以从源文件引用它 当我尝试运行项目时,它无法编译,因此我添加了:Android Studio:将jar添加为库?,android,gradle,android-gradle-plugin,gson,dependency-management,Android,Gradle,Android Gradle Plugin,Gson,Dependency Management,我正在尝试使用新的Android Studio,但似乎无法正常工作 我正在使用Gson库来序列化/反序列化JSON对象。但是这个库不知怎的没有包含在构建中 我创建了一个新项目,只需一个main活动。 复制了/libs文件夹中的gson-2.2.3.jar,并将其添加为库依赖项(右键单击->添加为库)。这包括android studio中的jar,因此可以从源文件引用它 当我尝试运行项目时,它无法编译,因此我添加了: compile files('libs/gson-2.2.3.jar') 到d
compile files('libs/gson-2.2.3.jar')
到de.gradle文件中的依赖项。之后,它会正确编译,但在运行应用程序时,我会得到一个ClassDefNotFoundException
有人知道我做错了什么吗?IIRC,仅仅使用“添加为库”是不够的,它无法与项目一起编译
检查有关向项目中添加库的信息
您最感兴趣的部分是:
(在文件>项目结构中)打开模块设置并选择依赖项选项卡
在“依赖项”选项卡上,单击“添加”,然后选择“库”
在“选择库”对话框中,选择一个或多个库,然后单击“添加选定项”
如果该库未显示在对话框中,请将其添加到“库”设置中,位于模块的正下方
您不需要再添加compile files()
,应该将库正确地添加到您的项目中。我已经为同样的事情奋斗了很多小时,试图让Gson jar正常工作。我终于破解了它——以下是我采取的步骤:
将Gson jar(在我的例子中是Gson-2.2.4.jar
)放入libs
文件夹中
右键单击它并点击“添加为库”
确保编译文件('libs/gson-2.2.4.jar')
在build.gradle
文件中(或者compilefiletree(dir:'libs',include:'*.jar')
如果您正在使用许多jar文件)
编辑:在Android Studio 3.0中使用实现文件('libs/gson-2.2.4.jar')
(或实现文件树(dir:'libs',include:'*.jar')
)+
做一个干净的构建(在Android Studio中你可能可以做得很好,但是为了确保我在终端中导航到我的应用程序的根文件夹并键入gradlew clean
。我在Mac OS X上,命令在你的系统上可能不同
在我完成了上述四个步骤后,它开始正常工作。我认为“添加为库”步骤是我以前错过的步骤,并且在我清理它之前它也不起作用
[编辑-添加了build.gradle
步骤,这也是其他人指出的必要步骤]在Mac OS X上:
将jar添加为库(将jar拖动到库中,右键单击添加为库)
将编译语句添加到build.grade
安装gradle v1.6(使用自制软件)
- brew安装gradle
- 格拉德尔-v
- 如果不是v1.6,请升级自制软件
gradle clean(重建android不工作)
这让我明白了。以下是将本地jar文件作为库添加到模块中的说明:
在模块目录的顶层创建“libs”文件夹(与包含“src”目录的目录相同)
在build.gradle文件中
添加以下内容,以使依赖项关闭:
dependencies {
// ... other dependencies
compile files('libs/<your jar's name here>')
}
依赖项{
//…其他依赖项
编译文件('libs/Java
4.4.选择本地jar并将其添加到项目中
您可能需要再次运行上述/gradlew
命令
“编译文件…”曾经适用于我,但现在不再适用了。在经历了很多痛苦之后,我发现使用它可以:
编译文件树(dir:'libs',include:'*.jar')
我不知道为什么会有不同,但是,至少这该死的东西现在起作用了
1。将jar(在我的例子中是gson-2.2.4.jar
)放入libs文件夹
2。确保编译文件(libs/gson-2.2.4.jar
)在build.gradle文件中
repositories {mavenCentral()}
dependencies {compile 'com.google.code.gson:gson:2.2.4'}
3.现在单击“将项目与Gradle文件同步”(左至顶栏上的AVD管理器按钮)
在我完成上述三个步骤后,它开始工作正常。在Android Stuido中,我喜欢使用Gradle来管理Gson库
在build.gradle文件中添加以下依赖项
repositories {mavenCentral()}
dependencies {compile 'com.google.code.gson:gson:2.2.4'}
一切都好
你也可以看到这篇文章。
我的答案基本上是收集了上面提供的一些正确但不完整的答案
开放式构建.gradle
添加以下内容:
dependencies {
compile 'com.android.support:appcompat-v7:19.+'
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.code.gson:gson:2.3'
}
这将允许支持两种不同的添加依赖项的方法。编译文件树(dir:'libs',include:['*.jar'])
(如@Binod所述)告诉编译器在文件夹libs下查找任何jar。创建这样一个文件夹“libs”是一个很好的做法,它将包含我们的应用程序需要使用的jar包
但这也将允许对Maven依赖项的支持。编译'com.google.code.gson:gson:2.3'
(正如@saneryee所提到的)这是另一种建议的方法,可以添加位于中央远程存储库而不是我们的/libs“本地存储库”中的依赖项它基本上是在告诉GeADLE寻找那个包的版本,它告诉编译器在编译项目时(在类路径中拥有)考虑它。
附:我两者都用
从网站下载库文件
从windows浏览复制
从项目资源管理器粘贴到库文件夹
Ctrl+Alt+Shift+S打开项目结构
选择“依赖项”选项卡,使用添加文件+
使用按钮将工具栏项目与渐变文件同步
这解决了我的问题。如果有人想试试看
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar']) ----> AS creates this
implementation 'com.google.code.gson:gson:2.3.1' ----------> I added this one
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:21.0.3'
implementation project(':okhttp-2.0.0')
implementation 'com.google.code.gson:gson:2.3.1'
}
menu File -> project struct -> module select "app" -> dependencies tab -> + button
-> File dependency -> PATH/myfile.jar
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation files('libs/android-query.jar')
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.google.code.gson:gson:2.3.1'
}
compile fileTree(dir: 'libs', include: ['*.jar'])
implementation fileTree(dir: 'libs', include: ['*.jar'])
-> new -> module
-> import jar/AAR package
-> import select the jar file to import
-> click ok -> done
implementation files('src/main/assets/jsoup.jar')
implementation files('src/main/assets/org-apache-xmlrpc.jar')
implementation files('src/main/assets/org.apache.commons.httpclient.jar')
implementation files('src/main/assets/ws-commons-util-1.0.2.jar')
{include=[*.jar], dir=libs}
dependencies {
...
implementation files('libs/myfile.jar')
dependencies {
...
implementation files('libs/myfile.jar')
}
import com.xxx.xxx;