Android Studio z usługami Google Play

95

Próbuję przetestować usługi Google Play w nowym Android Studio. Mam projekt z zależnością do google_play_services.jar. Ale kiedy próbuję odbudować projekt, otrzymuję następujące błędy:

Information:[TstGP3-TstGP3] Crunching PNG Files in source dir: C:\Users\ans\AndroidStudioProjects\TstGP3\TstGP3\src\main\res
Information:[TstGP3-TstGP3] To destination dir: C:\Users\ans\AndroidStudioProjects\TstGP3\build\classes\res-cache\TstGP3-TstGP3
Information:Compilation completed with 2 errors and 0 warnings in 2 sec
Information:2 errors
Information:0 warnings
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\Android_BuildConfig_Generator\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\BuildConfig.java
    Error:Error:line (4)error: duplicate class: com.example.tstgp3.BuildConfig
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\aapt\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\R.java
    Error:Error:line (10)error: duplicate class: com.example.tstgp3.R

Wygląda na to, że ma dwa pliki BuildConfig, a także dwie klasy R. Jak mogę rozwiązać ten problem?

EDYTOWAĆ:

Zauważyłem, że kompilator kompiluje dwa pliki R.java: ten, który znajduje się w folderze mojego projektu i drugi, który znajduje się w folderze% USERPROFILE% .AndroidStudioPreview Próbowałem więc wykluczyć ten folder „Preview” w ustawieniach kompilatora a teraz działa. Ten problem występuje dopiero po rozpoczęciu korzystania z klas Usług Google Play w moim projekcie. Będę wdzięczny, jeśli ktoś może wyjaśnić przyczynę tego problemu.

androidtester
źródło
Każdy może pomóc w tym, co robi kompilacja „com.google.android.gms: play-services: 6.5.87” po dodaniu do sekcji zależności w Android Studio. Możemy również dodać słoik, ale co robi powyższa linia, ponieważ nie dodajemy słoików.
Android Killer,

Odpowiedzi:

243

Wszystkie te odpowiedzi są błędne, ponieważ po wydaniu wtyczki Gradle v0.4.2 konfiguracja usług Google Play w Android Studio jest prosta. Nie musisz importować żadnego słoika, dodawać biblioteki projektów ani dodawać żadnego nowego modułu w Android Studio. Musisz tylko dodać odpowiednie zależności do pliku build.gradle. Proszę spojrzeć na te linki: aktualizacja wtyczki Gradle v0.4.2 , nowy system kompilacji i ten przykład

Prawidłowy sposób zrobić to w następujący sposób:

Przede wszystkim musisz uruchomić menadżera sdk oraz pobrać i zainstalować następujące pliki znajdujące się w "dodatkach": repozytorium wsparcia Androida , usługi Google Play , repozytorium Google .

Uruchom ponownie Android Studio i otwórz plik Build Gradle. Musisz zmodyfikować plik build.gradle, aby wyglądał tak w zależnościach:

dependencies {
    compile 'com.google.android.gms:play-services:6.5.87' 
 }

I na koniec zsynchronizuj swój projekt (przycisk po lewej stronie menedżera AVD).

Od wersji 6.5 możesz dołączyć pełną bibliotekę (bardzo dużą) lub tylko potrzebne moduły (najlepsza opcja). To znaczy, jeśli potrzebujesz tylko Google Maps i Analytics, możesz zastąpić poprzedni przykład następującym:

dependencies {  
    compile 'com.google.android.gms:play-services-base:6.5.87'    
    compile 'com.google.android.gms:play-services-maps:6.5.87'  
}

Pełną listę zależności można znaleźć tutaj

Kilka uwag dodatkowych:

  • Użyj najnowszej wersji biblioteki usług Play. Jeśli jest to stara wersja, podświetli ją android studio. Na dzień dzisiejszy (5 lutego to 6.5.87), ale najnowszą wersję możesz sprawdzić na Gradle Please
  • Po dużej aktualizacji Android Studio wyczyść i odbuduj swój projekt, postępując zgodnie z kolejnymi instrukcjami sugerowanymi w komentarzach @ user123321

    cd do folderu projektu
    ./gradlew clean
    ./gradlew build

Imanol
źródło
hej Estornino. Widziałem również tę aktualizację, ale zastanawiałem się, w jaki sposób Android Studio (przynajmniej samo IDE) przejmuje zależności? czy sprawiłeś, że działało tylko z ustawieniami Gradle?
zwycięzca n.
tak to zadziałało dla mnie. IDE jest również w stanie rozwiązać nowe nazwy. dzięki.
zwycięzca n.
Przepraszam za późną odpowiedź. Po naciśnięciu przycisku synchronizacji IDE automatycznie dodaje nowe zależności. To system budowania rządzi zachowaniem ide i odradza się wprowadzanie zmian w projekcie w stylu „starego” pomysłu (mam na myśli zmianę modułów i konfiguracji projektu). Cieszę się, że to działa dla Ciebie.
Imanol,
5
Upewnij się, że ./gradlew wyczyściłeś to ./gradlew build, zanim Android Studio 2.x przejmie zależność. W przeciwnym razie pojawi się błąd
NoClassDef
2
Na dzień dzisiejszy najnowsza wersja, którą otrzymałem, to 5.2.08
chrisbjr
114
  1. Przejdź do Plik -> Struktura projektu
  2. Wybierz „Ustawienia projektu”
  3. Wybierz kartę „Zależności”
  4. Kliknij „+” i wybierz „1. ​​Zależności biblioteki”
  5. Wyszukaj: com.google.android.gms: usługi-zabaw
  6. Wybierz najnowszą wersję i kliknij „OK”

Voila! Nie musisz walczyć z Gradle :)

Ivo Stoyanov
źródło
5
To zadziałało dla mnie i jest bardzo łatwe. Zna już numer najnowszej wersji usług Play - po prostu wybierz go z listy, a plik gradle zostanie zmodyfikowany dla Ciebie!
Nick Perkins,
Czy mogę użyć tej samej metody do importowania BaseGameUtils do tabeli liderów?
eng.ahmed
Tak, Ahmed. W ten sposób możesz zaimportować dowolną bibliotekę Androida.
Ivo Stoyanov
Proste, eleganckie rozwiązania. Dzięki @IvoStoyanov zaoszczędzi to dużo czasu początkującym takim jak ja.
Manikandan S
5

EDYTOWANE: Ten facet naprawdę przyniósł go do domu i ma dobry mały samouczek http://instantiatorgratification.blogspot.com/2013/05/google-play-services-with-android-studio.html

jedna uwaga: bawiłem się tak dużo, że musiałem zrobić, gradlew cleanaby to działało pomyślnie

Jeśli zaimportowałeś swój projekt lub pracujesz w aplikacji Przykładowe mapy, znajdującej się w \ extras \ google \ google_play_services \ samples \ maps, zapoznaj się z tym samouczkiem.

https://stackoverflow.com/a/16598478/2414698

Jeśli tworzysz nowy projekt od zera, zanotuj komentarze Xav w tym samym poście. Opisuje, że Android Studio używa innego kompilatora i że musisz ręcznie zmodyfikować plik build.gradle. Zrobiłem to z sukcesem. skopiowałem

  • google-play-services.jar
  • google-play-services.jar.properties

do mojego katalogu lib i dodałem następujący plik do mojego pliku build.gradle

dependencies {
    compile files('libs/android-support-v4.jar')
    compile files('libs/google-play-services.jar')
}

Jeśli jest to nowy projekt, sprawdź również ten post.

https://stackoverflow.com/a/16671865/2414698

packerprogrammer
źródło
7
Artykuł, do którego prowadzi łącze, jest teraz przestarzały. To rozwiązanie nie jest zalecane.
RevNoah,
4

Większość z tych odpowiedzi dotyczy tylko zależności czasu kompilacji, ale w czasie wykonywania znajdziesz wiele wyjątków NoClassDef. To dlatego, że potrzebujesz czegoś więcej niż google-play-services.jar. Odwołuje się do zasobów, które są częścią projektu biblioteki, a te nie są poprawnie dołączane, jeśli masz tylko jar.

To, co działało najlepiej, to najpierw poprawnie ustawić projekt w zaćmieniu. Zorganizuj swój projekt tak, aby obejmował zarówno Twoją aplikację, jak i bibliotekę, jak opisano tutaj: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup

Następnie wyeksportuj projekt aplikacji z eclipse i zaimportuj do Android Studio zgodnie z opisem tutaj: http://developer.android.com/sdk/installing/migrate.html . Pamiętaj, aby wyeksportować zarówno projekt aplikacji, jak i projekt biblioteki usług Google Play. Podczas importu wykryje projekt biblioteki i zaimportuje go jako moduł. Właśnie zaakceptowałem wszystkie ustawienia domyślne podczas procesu importu projektu.

Brad Armstrong
źródło
2
Dzięki, ale nie chcę używać zaćmienia!
androidtester
2

Integracja usług Google Play w studiu Android.

Krok 1:

SDK manager->Tools Update this

1.Google play services
2.Android Support Repository

Krok 2:

chance in build.gradle 
defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:4.0.+'
}

Krok 3:

 android.manifest.xml
<uses-sdk
        android:minSdkVersion="8" />

Krok 4:

Sync project file with grandle.
wait for few minute.

Krok 5:

File->Project Structure find error with red bulb images,click on go to add dependencies select your app module.
Save

Jeśli potrzebujesz pomocy, umieść komentarz. Miłego kodowania.

Ostry
źródło
2

Żadne z powyższych rozwiązań nie działało dla mnie. Nie jestem pewien, czy dotyczy to mojej konfiguracji, czy nowej wersji.

Używam Android Studio Beta 0.8.9 i nie otrzymałem żadnego com.google.android.gms: play-service na liście bibliotek po wykonaniu tej instrukcji:

Idź do Plik -> Struktura projektu -> Wybierz ustawienia projektu -> Wybierz kartę „Zależności” Kliknij „+” -> Zależności 1. biblioteki -> Wybierz com.google.android.gms: play-services: +

Już to zrobiłem:

Przede wszystkim musisz uruchomić menadżera sdk oraz pobrać i zainstalować następujące pliki znajdujące się w "dodatkach": repozytorium wsparcia Androida, usługi Google Play, repozytorium Google.

Rozwiązaniem było dodanie z Menedżera SDK „usług Google Play dla Froyo”, a następnie powtórzenie pierwszego kroku.

Nie zrozumiałem poprawnie przyczyny, ale to zadziałało.

PS: Właśnie zauważyłem, że nawet teraz, gdy szukam usług zabaw, to nie przychodzi, ale kiedy bezpośrednio przewijam i przeglądam listę, jest ona właśnie tam.

Selfx Aadhyant
źródło
2

Postępuj zgodnie z tym artykułem -> http://developer.android.com/google/play-services/setup.html

Powinieneś wybrać opcję Korzystanie z Android Studio

wprowadź opis obrazu tutaj

Przykładowy plik Gradle:

Uwaga: Otwórz plik build.gradle w katalogu modułu aplikacji.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "{applicationId}"
        minSdkVersion 14
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:20.+'
    compile 'com.google.android.gms:play-services:6.1.+'
}

Najnowszą wersję Usług Google Play można znaleźć tutaj: https://developer.android.com/google/play-services/index.html

d.danailov
źródło
1

Mam to działające po wykonaniu następujących czynności:

  • Użyj google-play-services-lib jako modułu (zwróć uwagę na różnicę między modułem a projektem), a następnie dodaj google-play-services.jar do katalogu „libs” swoich modeli.
  • Następnie dodaj słoik do ścieżki kompilacji, tworząc bibliotekę lub dodaj słoik do innej biblioteki. Generalnie mam jedną bibliotekę IDEA, do której dodaję wszystkie moje pliki /libs/*.jar.
  • Dodaj bibliotekę do ścieżki budowania modułów za pomocą ustawień modułu (F4).
  • Dodaj google-play-services-lib jako zależność modułu do swojego projektu.
  • Gotowe!

Uwaga: to również nie daje mi wyjątków czasu wykonywania, to działa.

Johan S
źródło
Otrzymuję te same błędy: R.java i BuildConfig.java są zduplikowane
androidtester
Czy masz moduł jako zależność kompilacji?
Johan S,
Tak! Jedynym rozwiązaniem jest to, o którym wspomniałem wcześniej (nie
licząc
0

Otwórz plik build.gradle projektu i dodaj poniższy wiersz w module zależności.

dependencies {
    compile 'com.google.android.gms:play-services:7.0.0'
}

Poniżej zostaną dodane Google Analytics i Mapy, jeśli nie chcesz integrować pełnej biblioteki

dependencies {
    compile 'com.google.android.gms:play-services-analytics:7.0.0'
    compile 'com.google.android.gms:play-services-maps:7.0.0'
}
Pankaj
źródło
0

W moim przypadku google-play-services_lib są zintegrowane jako moduł (zewnętrzne libs) dla mapy Google i GCM w moim projekcie.

Teraz ten czas wymaga implementacji Google Places Autocomplete API, ale problem polega na tym, że kod jest nowy, a moje biblioteki są stare, więc nie znaleziono niektórych klas:

wykonując następujące kroki ...

1> Zaktualizuj usługę Google Play do Menedżera SDK

2> wybierz nowy plik .jar usługi Google Play ( Sdk / extras / google / google_play_services / libproject / google-play-services_lib / libs ) zastąp starym

odniosłem sukces ... !!!

Dhruv Raval
źródło
-3

Skopiowałem pliki Play libs z google-play-services_lib do mojego katalogu libs projektu:

  • google-play-services.jar
  • google-play-services.jar.properties.

Następnie zaznacz je, kliknij prawym przyciskiem myszy „Dodaj jako biblioteki”.

proszę usuń mnie
źródło
1
Dziękuję za odpowiedź, ale to nie zadziałało dla mnie - jest podobne do czegoś, czego próbowałem wcześniej.
androidtester
Ta rada jest sprzeczna z innymi informacjami, które czytałem w innym miejscu. Odpowiedź, do której link znajduje się w pierwszej odpowiedzi, została wycofana, ponieważ korzysta z tej metody.
RevNoah,