Google Play Hizmetleri ile Android Studio


95

Google Play Hizmetlerini yeni Android Studio ile test etmeye çalışıyorum. Google_play_services.jar'a bağımlı olan bir projem var. Ancak projeyi yeniden oluşturmaya çalıştığımda aşağıdaki hataları alıyorum:

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

Görünüşe göre iki BuildConfig dosyası ve ayrıca iki R sınıfı var. Sorunu nasıl çözebilirim?

DÜZENLE:

Derleyicinin iki R.java dosyasını derlediğini fark ettim: proje klasörümde bulunan ve% USERPROFILE% klasöründe bulunan diğeri .AndroidStudioPreview Bu nedenle, derleyici ayarlarında bu "Önizleme" klasörünü hariç tutmaya çalıştım ve şimdi çalışıyor. Bu sorun yalnızca projemde Google Play Hizmetleri sınıflarını kullanmaya başladıktan sonra ortaya çıkıyor. Birisi bu sorunun arkasındaki nedeni açıklayabilirse minnettar olacağım.


Android stüdyosundaki bağımlılıklar bölümüne eklendiğinde bu derlemenin 'com.google.android.gms: play-services: 6.5.87' ne yaptığına herkes yardımcı olabilir. Kavanozu da ekleyebiliriz, ancak kavanoz eklemediğimiz için yukarıdaki satırın yaptığı gibi.
Android Killer

Yanıtlar:


244

Gradle eklentisi v0.4.2'nin piyasaya sürülmesinden bu yana tüm bu cevaplar yanlış, android stüdyosu altında google play hizmetlerinin kurulumu basittir. Herhangi bir jar dosyasını içe aktarmanıza veya herhangi bir proje kitaplığı eklemenize veya android studio altına yeni bir modül eklemenize gerek yoktur. Yapmanız gereken, build.gradle dosyasına doğru bağımlılıkları eklemektir. Lütfen şu bağlantılara bir göz atın: Gradle eklentisi v0.4.2 güncellemesi , Yeni Yapı Sistemi ve bu örnek

Bunu yapmanın Doğru yolu aşağıdaki gibidir:

Öncelikle sdk yöneticisini başlatmanız ve "ekstralar" altında bulunan şu dosyaları indirip yüklemeniz gerekir: Android destek havuzu , Google oyun hizmetleri , Google deposu .

Android stüdyosunu yeniden başlatın ve derleme gradle dosyasını açın. Bağımlılıklar altında bu şekilde görünmesi için build.gradle dosyanızı değiştirmelisiniz:

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

Ve son olarak projenizi senkronize edin (AVD yöneticisinin solundaki düğme).

6.5 sürümünden bu yana, tüm kitaplığı (çok büyük) veya yalnızca ihtiyacınız olan modülleri (En İyi Seçenek) dahil edebilirsiniz. Yani, yalnızca Google Haritalar ve Analytics'e ihtiyacınız varsa, önceki örneği aşağıdakilerle değiştirebilirsiniz:

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

Tam bağımlılık listesini burada bulabilirsiniz

Bazı yan notlar:

  • En son oyun hizmetleri kitaplığı sürümünü kullanın. Eski bir sürümse, android stüdyo onu vurgular. Bugün itibarıyla (5 Şubat 6.5.87) ancak en son sürümü Gradle'da kontrol edebilirsiniz.
  • Android Studio'nun büyük bir güncellemesinden sonra, @ user123321 tarafından yapılan yorumlarda önerilen sonraki talimatları izleyerek projenizi yeniden oluşturun.

    proje klasörünüze cd
    ./gradlew clean
    ./gradlew build


merhaba Estornino. Bu güncellemeyi de gördüm, ancak Android Studio'nun (en azından IDE'nin kendisi) bağımlılıkları nasıl aldığını merak ediyordum? sadece Gradle ayarlarıyla çalışmasını sağladınız mı?
victor n.

evet benim için çalıştı. IDE ayrıca yeni isimleri çözebilir. Teşekkürler.
victor n.

Geç cevap verdiğim için özür dilerim. Senkronize et düğmesine bastığınızda ide, yeni bağımlılıkları otomatik olarak ekler. Bu, ide davranışını yöneten inşa sistemidir ve projede "eski" fikir tarzında değişiklik yapmaktan kaçınılır (modülleri ve proje yapılandırmasını değiştirmeyi kastediyorum). Senin için çalıştığına sevindim.
Imanol

5
Android studio 2.x bağımlılığı almadan önce ./gradlew temizlediğinizden emin olun. Aksi takdirde NoClassDef hatası alırsınız
user123321

2
Bugün itibariyle, aldığım en son derleme 5.2.08 idi
chrisbjr

114
  1. Dosyaya Git -> Proje Yapısı
  2. 'Proje Ayarları'nı seçin
  3. 'Bağımlılıklar' sekmesini seçin
  4. '+' Seçeneğini tıklayın ve '1. Kitaplık Bağımlılıkları'nı seçin
  5. Com.google.android.gms: play-services için ara
  6. En son sürümü seçin ve 'Tamam'ı tıklayın

Voila! Gradle ile savaşmaya gerek yok :)


5
Bu benim için çalıştı ve çok kolay. En son oyun hizmetleri sürüm numarasını zaten biliyor - sadece listeden seçiyorsunuz ve gradle dosyası sizin için değiştiriliyor!
Nick Perkins

Skor tablosu için BaseGameUtils'i içe aktarmak için aynı yöntemi kullanabilir miyim?
eng.ahmed

Evet Ahmed. Bu şekilde herhangi bir Android kitaplığını içe aktarabilirsiniz.
Ivo Stoyanov

Basit, Zarif çözümler. Teşekkürler @IvoStoyanov benim gibi yeni başlayanların çok zamanını kurtaracak.
Manikandan S

5

DÜZENLENMİŞ: Bu adam gerçekten eve getirdi ve güzel bir eğitici var http://instantiatorgratification.blogspot.com/2013/05/google-play-services-with-android-studio.html

bir yan not: o kadar çok oynadım ki gradlew cleanbaşarılı bir şekilde çalışması için bir yapmam gerekiyordu

Projenizi içe aktardıysanız veya \ extras \ google \ google_play_services \ samples \ maps konumunda bulunan Örnek Haritalar uygulamasından çalışıyorsanız bu eğiticiye göz atın.

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

Sıfırdan yeni bir proje oluşturuyorsanız, aynı yazıya Xav'ın yorumlarını not edin. Android Studio'nun farklı bir derleyici kullandığını ve build.gradle dosyasını manuel olarak değiştirmeniz gerektiğini anlatıyor. Bunu başarıyla yaptım. kopyaladım

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

lib dizinime ve build.gradle dosyama aşağıdakileri ekledim

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

Ayrıca, bu yeni bir projeyse, bu gönderiye de göz atın.

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


7
Bağlandığınız makale artık kullanımdan kaldırıldı. Bu çözüm önerilmez.
RevNoah

4

Bu yanıtların çoğu yalnızca derleme zamanı bağımlılıklarına yöneliktir, ancak çalışma zamanında bir dizi NoClassDef istisnası bulacaksınız. Bunun nedeni, google-play-services.jar'dan daha fazlasına ihtiyacınız var. Kitaplık projesinin parçası olan kaynaklara başvurur ve yalnızca kavanozunuz varsa bunlar doğru şekilde dahil edilmez.

Benim için en çok işe yarayan şey, önce tutulma sırasında proje kurulumunu doğru bir şekilde yapmaktı. Burada açıklandığı gibi, projenizi hem uygulamanızı hem de kitaplığı içerecek şekilde yapılandırın: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup

Ardından uygulama projenizi eclipse'den dışa aktarın ve burada açıklandığı gibi Android Studio'ya aktarın: http://developer.android.com/sdk/installing/migrate.html . Hem uygulama projenizi hem de google play hizmetleri kitaplık projenizi dışa aktardığınızdan emin olun. İçe aktarırken kütüphane projesini tespit edecek ve bir modül olarak içe aktaracaktır. Proje içe aktarma işlemi sırasında tüm varsayılanları kabul ettim.


2
Teşekkürler, ama tutulmayı kullanmak istemiyorum!
androidtester

2

Google Play hizmetleri Android stüdyosunda entegrasyon.

Aşama 1:

SDK manager->Tools Update this

1.Google play services
2.Android Support Repository

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

Aşama 3:

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

4. Adım:

Sync project file with grandle.
wait for few minute.

Adım 5:

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

Yardıma ihtiyacınız varsa lütfen yorum yazınız. Mutlu kodlamalar.


2

Yukarıdaki çözümlerin hiçbiri benim için işe yaramadı. Kurulumuma mı yoksa yeni sürümüme mi özgü olduğundan emin değilim.

Android Studio Beta 0.8.9 kullanıyorum ve herhangi bir com.google.android.gms: play-service'i bu talimatın ardından kitaplık listesinde alamıyorum:

Dosya'ya gidin -> Proje Yapısı -> Proje Ayarlarını Seçin -> 'Bağımlılıklar' Sekmesini seçin '+' -> 1. Kitaplık Bağımlılıkları -> com.google.android.gms: play-services: + seçeneğini tıklayın

Bunu zaten yapmıştım:

Öncelikle sdk yöneticisini başlatmanız ve "ekstralar" altında bulunan şu dosyaları indirip yüklemeniz gerekir: Android destek havuzu, Google oyun hizmetleri, Google deposu.

Çözülen şey, SDK Yöneticisi'nden "Froyo için Google oyun hizmetleri" eklemek ve ardından ilk adımı tekrarlamaktı.

Nedeni tam olarak anlamadım ama bu işe yaradı.

Not: Şimdi bile oyun hizmetlerini aradığımda bunun gelmediğini, ancak doğrudan listeyi kaydırıp baktığımda tam orada olduğunu gözlemledim.


2

Bu makaleyi izleyin -> http://developer.android.com/google/play-services/setup.html

Android Studio Kullanmayı seçmelisiniz

görüntü açıklamasını buraya girin

Örnek Gradle dosyası:

Not: Uygulama modülü dizininizdeki build.gradle dosyasını açın.

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

Google Play Hizmetlerinin en son sürümünü burada bulabilirsiniz: https://developer.android.com/google/play-services/index.html


1

Aşağıdakileri yaptıktan sonra bunu çalıştırıyorum:

  • Google-play-services-lib'i bir modül olarak alın (modül ve proje arasındaki farkı not edin), ardından google-play-services.jar dosyasını modellerinizin "libs" dizinine ekleyin.
  • Bundan sonra bir kitaplık oluşturarak kavanozu oluşturma yolunuza ekleyin veya kavanozu başka bir kitaplığa ekleyin. Genelde tüm /libs/*.jar dosyalarımı eklediğim tek bir IDEA kitaplığım var.
  • Modül Ayarları (F4) aracılığıyla kitaplığı modül oluşturma yolunuza ekleyin.
  • Google-play-services-lib'i projenize modül bağımlılığı olarak ekleyin.
  • Bitti!

Not: Bu bana çalışma zamanı istisnalarını da vermiyor, çalışıyor.


Aynı hataları alıyorum: R.java ve BuildConfig.java yineleniyor
androidtester

Modüle bir derleme bağımlılığı olarak sahip misiniz?
Johan S

Evet! Tek çözüm, daha önce bahsettiğim çözümdür (Önizleme klasörünü hariç
tutun

0

Proje build.gradle dosyanızı açın ve bağımlılıklar modülünün altına aşağıdaki satırı ekleyin.

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

Tam kitaplığı entegre etmek istemiyorsanız, aşağıdakiler Google Analytics ve Haritalar eklenecektir

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

0

Benim durumumda google-play-services_lib , projemde Google haritası ve GCM için modül (Harici Kitaplıklar) olarak entegre edildi .

Şimdi, bu zamanlar Google Places Autocomplete API'nin uygulanmasını gerektiriyor ancak sorun şu ki kod yeni ve kitaplıklarım eski, bu yüzden bazı sınıflar bulunamadı:

bu adımları takip ederek ...

1> Google oyun hizmetini SDK Yöneticisine güncelleyin

2> google oyun hizmetinin yeni .jar dosyasını seçin ( Sdk / extras / google / google_play_services / libproject / google-play-services_lib / libs ) eskisiyle değiştirin

başarılı oldum ... !!!


-3

Play libs dosyalarını google-play-services_lib'den proje kitaplıkları dizinime kopyaladım:

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

Ardından bunları seçin, "Kitaplık olarak ekle" yi sağ tıklayın.


1
Cevabınız için teşekkürler ama benim için işe yaramadı - daha önce denediğim bir şeye benziyor.
androidtester

Bu tavsiye, başka bir yerde okuduğum diğer bilgilere aykırı. İlk cevapta bağlantı verilen cevap, bu yöntemi kullandığı için kullanımdan kaldırılmıştır.
RevNoah
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.