2013-07-28 18 views
48

Więc dodałem gson-2.2.4.jar do katalogu libs (używam androida). Mój projekt nie mógł znaleźć rzeczy w goniach, więc dodałem go jako zależność od biblioteki do mojego modułu w "strukturze projektu". Podczas próby uruchomienia projektu kompilacja kończy się niepowodzeniem z następującymi błędami:Android Gradle nie może znaleźć symbolu klasy 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 

Dlaczego nie mogę tego uruchomić? Czytałem gdzie indziej, że gradle ma obsłużyć wszystko automatycznie, jeśli jest umieszczone w katalogu lib.

+0

Nie wiem, jak działa Android Studio, ale jak wygląda twój plik 'build.gradle'? – superEb

Odpowiedz

39

Dodanie go jako zależności w ustawieniach struktury projektu nie jest wystarczające. To ustawienie dotyczy tylko IDE. Aby właściwie zbudować, Gradle musi być tego świadomy. Musisz dodać plik .jar do pliku build.gradle, tak jak ...

dependencies { 
    compile files('libs/gson-2.2.4.jar') 
} 
+0

Widzę, wielkie dzięki! to się udało. –

+0

Czy to jest build.gradle modułu lub projektu? – sisko

+19

NB, aktualna wersja gsona to 2.3, więc użyj: 'dependencies {compile 'com.google.code.gson: gson: 2.3}' – nyxee

93

Napotkałem ten sam problem. Właśnie dodałem pojedynczą linię, jak pokazano poniżej w moich zależności build.gradle (bez dodawania żadnego słoika w strukturze projektu) i to działało dla mnie.

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.+' 
} 

Wraz z powyższym, znalazłem kilka innych rzeczy, które są wymagane do tego działania.

  1. Upewnij się, że masz plik android:targetSdkVersion="18" w pliku AndroidManifest.xml.

    <uses-sdk 
        android:minSdkVersion="10" 
        android:targetSdkVersion="18" /> 
    
  2. Sprawdź, czy masz targetSdkVersion 18 w build.gradle pliku.

    defaultConfig { 
        minSdkVersion 10 
        targetSdkVersion 18 
    } 
    
  3. Upewnij się, że są podłączone do Internetu; aby słoiki zostały pobrane z internetowego repozytorium centralnego maven.

+2

#Shai Surve - czy to nadal działa? Muszę dołączyć gson do bibliotek i odwoływać się do niego za pomocą "kompilacji plików". – AndroidGuy

+0

Tak, to działa dla mnie. Jeśli nie działa, gdy nie masz połączenia z internetem. Następnie spróbuj zrobić to samo, będąc podłączonym do Internetu. Ponieważ pobiera słoik z repozytorium centralnego maven, którego proces budowania zostanie pobrany z internetowego repozytorium maven centralnego. – Sahil

+0

świetnie! Nie wiedziałem, że istnieje artefakt dla gson na google code. jak dowiedzieć się, co jeszcze można określić jako zależność w gradle. zdalne biblioteki muszą mieć plik build.gradle, prawda? – speedynomads

13

Mam do czynienia z tym samym problemem.

Aby rozwiązać to mieć pewność, że podasz Maven centralny android wtyczki

repositories { 
    mavenCentral() 
} 

I należy dodać, dwa razy, jeśli są zdefiniowaniu kompilacji skryptu

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') 
} 
+0

po raz kolejny zastosowałem dyrektywę 'repositories' na najwyższym poziomie. –

1

utworzyć nazwę folderu libs i dodać lub edytować build.gradle (działa na każdym słoiku w folderze lib)

dependencies { 
    compile fileTree(dir: 'libs', include: '*.jar') 
} 
19

Wystarczy dodać punkt,

Od wersji Gradle 1.7 jcenter() jest nadzbiorem mavenCentral() ... więc nie ma potrzeby dodawania dyrektywy i repozytoriów.

Słoiki zostaną pobrane z internetowego centralnego repozytorium jcenter. więc dodanie działa następująca instrukcja.

dependencies { 
compile 'com.google.code.gson:gson:2.2.+' 
} 
+0

Najprostszy i najlepszy. – peresisUser

6

W moim przypadku, po prostu dodaje się następujący wiersz:

dependencies { 

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

na moim pliku app build.gradle.

teraz 2.7 jest dostępna wersja ostatnia prąd według: https://mvnrepository.com/artifact/com.google.code.gson/gson

Proszę zaznaczyć to repozytorium, aby mieć pewność, że korzystasz z ostatnią dostępną wersję.

Powiązane problemy