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

我正在尝试使用新的Android Studio,但似乎无法正常工作

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

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

当我尝试运行项目时,它无法编译,因此我添加了:

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;