我正在尝试使用新的Android Studio,但我似乎不能让它正常工作。

我正在使用Gson库来序列化/反序列化json对象。但是这个库不知何故没有包含在构建中。

我用MainActivity创建了一个新项目。 复制gson-2.2.3.jar到/libs文件夹中,并将其添加为库依赖项(右键单击->添加为库)。这包括android studio中的jar,因此可以从源文件中引用它。

当我尝试运行项目时,它无法编译,所以我添加:

compile files('libs/gson-2.2.3.jar')

到de .gradle文件中的依赖项。之后,它正确编译,但当运行应用程序时,我得到一个ClassDefNotFoundException。

有人知道我哪里做错了吗?


当前回答

我已经为同样的事情挣扎了好几个小时,试图让Gson罐子工作。我终于破解了——下面是我采取的步骤:

Put the Gson jar (in my case, gson-2.2.4.jar) into the libs folder Right click it and hit 'Add as library' Ensure that compile files('libs/gson-2.2.4.jar') is in your build.gradle file (or compile fileTree(dir: 'libs', include: '*.jar') if you are using many jar files) Edit : Use implementation files('libs/gson-2.2.4.jar') (or implementation fileTree(dir: 'libs', include: '*.jar')) in Android Studio 3.0+ Do a clean build (you can probably do this fine in Android Studio, but to make sure I navigated in a terminal to the root folder of my app and typed gradlew clean. I'm on Mac OS X, the command might be different on your system

在我完成以上四项之后,它开始正常工作。我认为“添加为库”步骤是我之前错过的一个步骤,直到我清理它它才开始工作。

[编辑-添加构建Gradle步骤也是必要的,正如其他人指出的那样]

其他回答

IIRC,简单地使用“Add as library”是不足以让它与项目一起编译的。

查看Intellij关于向项目中添加库的帮助

你应该最感兴趣的部分是:

(在文件>项目结构中)打开模块设置并选择Dependencies选项卡。 在Dependencies选项卡上,单击add并选择Library。 在“选择库”对话框中,选择一个或多个库,然后单击“添加选定”。

如果库没有显示在对话框中,将其添加到Libraries设置中,就在Modules的正下方。

您不应该再需要添加compile files(),并且应该将库适当地添加到项目中。

menu File -> project struct -> module select "app" -> dependencies tab -> + button 
-> File dependency -> PATH/myfile.jar

我已经阅读了这里所有的答案,它们似乎都涵盖了旧版本的Android Studio!

用Android Studio 2.2.3创建一个项目,我只需要在app下创建一个libs目录,并将我的jar放在那里。 我是用我的文件管理器完成的,不需要在Android Studio中点击或编辑任何东西。

为什么有效?打开构建/编辑库和依赖项,你会看到:

{include=[*.jar], dir=libs}

所有这些解决方案都过时了。现在在Android Studio中非常简单:

文件>新模块…

下一个屏幕看起来很奇怪,就像你选择了一些小部件或其他东西,但保留了它 在第一张图片和下面滚动,找到“Import JAR or .AAR Package”

然后从文件菜单中选择项目结构。从打开的窗口中选择app,然后选择依赖项,然后按绿色加号按钮,选择模块依赖项,然后选择导入的模块,然后按OK

就像许多人之前指出的那样,你应该补充

compile files('libs/gson-2.2.3.jar') 

适合你的身材。gradle文件。

然而,我在Android Studio中有一个项目,是从Eclipse迁移过来的,在这种情况下,“libs”文件夹被命名为“lib”,所以对我来说,删除“s”解决了问题。