Android Gradle не может найти класс символов Gson

Поэтому я добавил gson-2.2.4.jar в каталог libs (я использую студию Android). Мой проект не смог найти материал gson, поэтому я добавил его как библиотечную зависимость к моему модулю в «Структуре проекта». Когда я пытаюсь запустить проект, сборка завершается со следующими ошибками:

Error:(12, 23) Gradle: package com.google.gson does not exist
Error:(37, 3) Gradle: cannot find symbol class Gson
Error:(37, 19) Gradle: cannot find symbol class Gson

Почему я не могу заставить это работать? Я читал в другом месте, что gradle должен обрабатывать все автоматически, если он помещен в каталог lib.


person jensengar    schedule 28.07.2013    source источник
comment
Я не знаком с тем, как работает Android Studio, но как выглядит ваш файл build.gradle?   -  person superEb    schedule 29.07.2013


Ответы (11)


Добавить его как зависимость в настройках структуры проекта недостаточно. Этот параметр предназначен только для IDE. Чтобы на самом деле построить, Gradle также должен знать об этом. Вы должны добавить файл .jar в файл build.gradle следующим образом...

dependencies {
    compile files('libs/gson-2.2.4.jar')
}
person Alex Fu    schedule 28.07.2013
comment
Это build.gradle модуля или проекта? - person sisko; 26.08.2013
comment
NB, текущая версия gson — 2.3, поэтому используйте: dependencies { compile 'com.google.code.gson:gson:2.3 } - person nyxee; 01.10.2015

Я столкнулся с той же проблемой. Я просто добавил одну строку, как показано ниже, в мои зависимости build.gradle (без добавления jar в структуру проекта), и это сработало для меня.

dependencies {
    compile 'com.google.code.gson:gson:2.2.+'
    compile 'com.android.support:support-v4:13.0.+'
    compile 'com.android.support:appcompat-v7:18.0.+'
}

Наряду с вышеизложенным я нашел еще несколько вещей, которые необходимы для этого.

  1. Убедитесь, что у вас есть android:targetSdkVersion="18" в файле AndroidManifest.xml.

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="18" />
    
  2. Убедитесь, что у вас есть targetSdkVersion 18 в файле build.gradle.

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 18
    }
    
  3. Убедитесь, что вы подключены к Интернету; так что банки будут загружены из центрального онлайн-репозитория maven.

person Pioneer    schedule 10.08.2013
comment
#Shai Surve - Это все еще работает для вас? Мне нужно включить gson в библиотеки и ссылаться на него с файлами компиляции. - person AndroidGuy; 12.08.2013
comment
Да, это работает для меня. Если он не работает, когда вы не подключены к Интернету. Затем попробуйте то же самое при подключении к Интернету. Потому что он извлекает банку из центрального репозитория maven, который процесс сборки загружает из центрального онлайн-репозитория maven. - person Pioneer; 27.08.2013
comment
отличный! Я не знал, что в коде Google есть артефакт для gson. как узнать, что еще доступно для ссылки в качестве зависимости в gradle. удаленные библиотеки должны иметь файл build.gradle, верно? - person speedynomads; 26.09.2013
comment
Потрясающий! Я попробовал вариант компиляции файлов и не смог заставить его работать. Использование gradle/maven, как указано выше, работало прекрасно. - person Justin; 11.04.2014
comment
@ShaiSurve Указывать uses-sdk в манифесте не нужно — он перезаписывается тем, что находится в build.gradle - person Melllvar; 31.01.2015
comment
Спасибо, Меллвар, ты прав. В новых версиях Android Studio и Gradle Manifest использование SDK не требуется. - person Pioneer; 12.03.2015

Просто чтобы добавить точку,

Начиная с Gradle 1.7, jcenter() является надмножеством mavenCentral()... поэтому нет необходимости добавлять директиву и репозитории.

JAR-файлы будут загружены из центрального онлайн-репозитория jcenter. поэтому добавление только следующего оператора работает.

dependencies {
compile 'com.google.code.gson:gson:2.2.+'
}
person Nicks    schedule 06.07.2015

Я столкнулся с той же проблемой.

Чтобы решить эту проблему, убедитесь, что вы указали maven central for android plugin.

repositories {
    mavenCentral()
}

И его следует добавить дважды, если вы определяете скрипт сборки.

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5+'
    } 
}


repositories {
    mavenCentral() 
}


apply plugin: 'android' dependencies {    
    compile 'com.google.code.gson:gson:2.2.4'
    compile 'com.android.support:support-v4:13.0.0'   
    compile project(':libraries:volley') 
}
person user438316    schedule 03.09.2013
comment
установка директивы repositories еще раз на верхнем уровне сработала для меня - person 3k-; 03.07.2014

В моем случае я просто добавил эту строку:

dependencies {

    compile 'com.google.code.gson:gson:2.7'
}

в моем файле build.gradle приложения.

На данный момент 2.7 является последней текущей доступной версией в соответствии с: https://mvnrepository.com/artifact/com.google.code.gson/gson

Пожалуйста, проверьте этот репозиторий, чтобы убедиться, что вы используете последнюю доступную версию.

person Juan Pablo    schedule 03.10.2016

Попробуйте этот GSON. Добавьте это в build.gradle (модуль: приложение)

implementation 'com.google.code.gson:gson:2.2.4'

person rhaldar    schedule 27.03.2018

Добавьте это в build.gradle (модуль: приложение)

    dependencies {
      implementation fileTree(dir: 'libs', include: ['*.jar'])
      implementation 'com.android.support:appcompat-v7:27.1.1'
      implementation 'com.android.support:design:27.1.1'
      implementation 'com.google.code.gson:gson:2.8.0'
    }
person Abu Nayem    schedule 01.05.2018

Просто обновить ссылку (я искал):

implementation 'com.google.code.gson:gson:2.8.5'

Вы можете увидеть последнюю версию в его репозитории github.

person Cícero Moura    schedule 10.04.2019

Создайте имя папки libs и добавьте или отредактируйте build.gradle (работает для любой библиотеки jar в папке)

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}
person hirigoshy    schedule 09.12.2013

Я решил проблему, сделав targetSdkVersion одинаковым для всех библиотечных модулей с модулем уровня приложения.

person M.Noman    schedule 09.04.2018

Добавление следующих зависимостей может решить мои проблемы по состоянию на год: 2021;

 implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
 implementation 'com.google.code.gson:gson:2.2.4'

 
person Ank_247shbm    schedule 22.12.2020