Android Studio dengan Layanan Google Play

95

Saya mencoba menguji Layanan Google Play dengan Android Studio baru. Saya memiliki proyek dengan ketergantungan pada google_play_services.jar. Tetapi ketika saya mencoba untuk membangun kembali proyek saya mendapatkan kesalahan berikut:

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

Tampaknya ia memiliki dua file BuildConfig dan juga dua kelas R. Bagaimana cara mengatasi masalah tersebut?

EDIT:

Saya telah memperhatikan bahwa kompilator mengkompilasi dua file R.java: yang ada di folder proyek saya dan satu lagi yang terletak di folder% USERPROFILE% .AndroidStudioPreview Jadi, saya mencoba untuk mengecualikan folder "Pratinjau" ini di pengaturan kompiler dan sekarang berhasil. Masalah ini hanya terjadi setelah saya mulai menggunakan kelas Layanan Google Play dalam proyek saya. Saya akan menghargai jika seseorang dapat menjelaskan alasan di balik masalah ini.

androidtester
sumber
Siapa pun dapat membantu apa yang dilakukan kompilasi 'com.google.android.gms: play-services: 6.5.87' ini saat ditambahkan ke bagian dependensi di studio android. Kita dapat menambahkan toples juga tetapi apa yang dilakukan baris di atas karena kita tidak menambahkan toples.
Android Killer

Jawaban:

243

Semua jawaban itu salah, sejak rilis plugin gradle v0.4.2 pengaturan layanan google play di bawah studio android sangat mudah. Anda tidak perlu mengimpor jar atau menambahkan pustaka proyek atau menambahkan modul baru di bawah android studio. Yang harus Anda lakukan adalah menambahkan dependensi yang benar ke dalam file build.gradle. Silakan lihat link tersebut: Gradle plugin v0.4.2 update , New Build System , dan contoh ini

The Benar untuk melakukannya adalah sebagai berikut:

Pertama-tama Anda harus meluncurkan manajer sdk dan mengunduh serta menginstal file berikut yang terletak di bawah "ekstra": Repositori dukungan Android , layanan Google play , penyimpanan Google .

Mulai ulang studio android dan buka file build gradle. Anda harus mengubah file build.gradle Anda agar terlihat seperti ini di bawah dependensi:

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

Dan akhirnya sinkronkan proyek Anda (tombol di sebelah kiri pengelola AVD).

Sejak versi 6.5 Anda dapat menyertakan pustaka lengkap (sangat besar) atau hanya modul yang Anda butuhkan (Opsi Terbaik). Yaitu jika Anda hanya membutuhkan Google Maps dan Analytics, Anda dapat mengganti contoh sebelumnya dengan yang berikut ini:

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

Anda dapat menemukan daftar ketergantungan lengkapnya di sini

Beberapa catatan tambahan:

  • Gunakan versi perpustakaan layanan bermain terbaru. Jika ini versi lama, studio android akan menyorotnya. Mulai hari ini (5 Februari adalah 6.5.87) tetapi Anda dapat memeriksa versi terbaru di Gradle Please
  • Setelah pembaruan utama Android Studio, bersihkan rekondisi proyek Anda dengan mengikuti petunjuk selanjutnya seperti yang disarankan dalam komentar oleh @ user123321

    cd ke folder proyek Anda
    ./gradlew clean
    ./gradlew build

Imanol
sumber
hai Estornino. saya melihat pembaruan ini juga, tetapi saya bertanya-tanya bagaimana Android Studio (setidaknya IDE itu sendiri) mengambil dependensi? apakah Anda membuatnya berfungsi hanya dengan setelan Gradle?
victor n.
ya itu berhasil untuk saya. IDE juga mampu menyelesaikan nama baru. Terima kasih.
victor n.
Maaf atas balasan yang terlambat. Saat Anda menekan tombol sinkronkan ide menambahkan dependensi baru secara otomatis. Sistem buildlah yang mengatur perilaku ide dan tidak disarankan untuk melakukan perubahan pada proyek dalam gaya ide "lama" (maksud saya mengubah modul dan konfigurasi proyek). Saya senang ini berhasil untuk Anda.
Imanol
5
Pastikan Anda membersihkan ./gradlew lalu ./gradlew build sebelum android studio 2.x akan mengambil ketergantungan. Jika tidak, Anda mendapatkan kesalahan
NoClassDef
2
Sampai hari ini, build terbaru yang saya dapatkan adalah 5.2.08
chrisbjr
114
  1. Buka File -> Struktur Proyek
  2. Pilih 'Project Settings'
  3. Pilih Tab 'Dependensi'
  4. Klik '+' dan pilih '1. Library Dependencies'
  5. Telusuri: com.google.android.gms: play-services
  6. Pilih versi terbaru dan klik 'OK'

Voila! Tidak perlu berkelahi dengan Gradle :)

Ivo Stoyanov
sumber
5
Ini berhasil untuk saya dan sangat mudah. Itu sudah mengetahui nomor versi play-services terbaru - Anda cukup memilihnya dari daftar, dan file gradle diubah untuk Anda!
Nick Perkins
Dapatkah saya menggunakan metode yang sama untuk mengimpor BaseGameUtils untuk papan peringkat?
eng. Ahmed
Ya, Ahmed. Dengan cara ini Anda dapat mengimpor pustaka Android apa pun.
Ivo Stoyanov
Solusi Sederhana dan Elegan. Terima kasih @IvoStoyanov, ini akan menghemat banyak waktu bagi pemula seperti saya.
Manikandan S
5

DIEDIT: Orang ini benar-benar membawanya pulang dan memiliki tutorial kecil yang bagus http://instantiatorgratification.blogspot.com/2013/05/google-play-services-with-android-studio.html

satu catatan samping: Saya telah bermain-main begitu banyak sehingga saya perlu melakukan a gradlew cleanagar berjalan dengan sukses

Jika Anda telah mengimpor proyek Anda atau bekerja dari aplikasi Peta Contoh yang terletak di \ extras \ google \ google_play_services \ samples \ maps, lihat tutorial ini.

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

Jika Anda membuat proyek baru dari awal, catat komentar Xav pada posting yang sama. Dia menjelaskan bahwa Android Studio menggunakan kompiler yang berbeda dan Anda harus memodifikasi file build.gradle secara manual. Saya melakukan ini dengan sukses. Saya menyalin

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

ke direktori lib saya dan menambahkan berikut ini ke file build.gradle saya

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

Juga, jika ini adalah proyek baru, lihat posting ini juga.

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

packerprogrammer
sumber
7
Artikel yang Anda tautkan sekarang sudah usang. Solusi ini tidak disarankan.
RevNoah
4

Sebagian besar jawaban ini hanya membahas dependensi waktu kompilasi, tetapi Anda akan menemukan host pengecualian NoClassDef saat runtime. Itu karena Anda membutuhkan lebih dari sekedar google-play-services.jar. Ini mereferensikan sumber daya yang merupakan bagian dari proyek perpustakaan, dan itu tidak disertakan dengan benar jika Anda hanya memiliki jar.

Yang paling berhasil bagi saya adalah pertama-tama mendapatkan pengaturan proyek dengan benar di eclipse. Buat proyek Anda terstruktur sehingga mencakup aplikasi dan pustaka Anda, seperti yang dijelaskan di sini: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup

Kemudian ekspor proyek aplikasi Anda dari eclipse, dan impor ke Android Studio seperti yang dijelaskan di sini: http://developer.android.com/sdk/installing/migrate.html . Pastikan untuk mengekspor proyek aplikasi Anda dan proyek perpustakaan layanan google play. Saat mengimpor itu akan mendeteksi proyek perpustakaan dan mengimpornya sebagai modul. Saya baru saja menerima semua default selama proses impor proyek.

Brad Armstrong
sumber
2
Terima kasih, tetapi saya tidak ingin menggunakan eclipse!
androidtester
2

Integrasi layanan Google Play di studio Android.

Langkah 1:

SDK manager->Tools Update this

1.Google play services
2.Android Support Repository

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

Langkah 3:

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

Langkah 4:

Sync project file with grandle.
wait for few minute.

Langkah 5:

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

Tolong beri komentar jika Anda membutuhkan bantuan. Selamat membuat kode.

Harshid
sumber
2

Tidak ada solusi di atas yang berhasil untuk saya. Tidak yakin apakah ini khusus untuk penyiapan saya atau rilis baru.

Saya menggunakan Android Studio Beta 0.8.9 dan saya tidak mendapatkan com.google.android.gms: play-service di daftar perpustakaan saat mengikuti instruksi ini:

Buka File -> Struktur Proyek -> Pilih Pengaturan Proyek -> Pilih Tab 'Dependensi' Klik '+' -> 1. Ketergantungan Perpustakaan -> Pilih com.google.android.gms: play-services: +

Saya sudah melakukan ini:

Pertama-tama Anda harus meluncurkan sdk manager dan mendownload serta menginstal file berikut yang terletak di bawah "ekstra": Repositori dukungan Android, layanan Google play, repositori Google.

Yang menyelesaikannya adalah menambahkan dari SDK Manager, "layanan Google play untuk Froyo" lalu mengulangi langkah pertama.

Tidak memahami alasannya dengan benar tetapi ini berhasil.

PS: Saya baru mengamati bahwa bahkan sekarang ketika saya mencari layanan bermain ini tidak datang, tetapi ketika saya langsung menggulir dan melihat daftar itu ada di sana.

Selfx Aadhyant
sumber
2

Ikuti artikel ini -> http://developer.android.com/google/play-services/setup.html

Anda harus memilih Menggunakan Android Studio

masukkan deskripsi gambar di sini

Contoh file Gradle:

Catatan: Buka file build.gradle di dalam direktori modul aplikasi Anda.

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

Anda dapat menemukan versi terbaru Layanan Google Play di sini: https://developer.android.com/google/play-services/index.html

d.danailov
sumber
1

Saya mendapatkan ini berfungsi setelah melakukan hal berikut:

  • Miliki google-play-services-lib sebagai modul (perhatikan perbedaan antara modul dan project), lalu tambahkan google-play-services.jar ke direktori "libs" model Anda.
  • Setelah itu tambahkan toples ke jalur build Anda dengan membuat perpustakaan atau menambahkan toples ke perpustakaan lain. Saya biasanya memiliki satu pustaka IDEA yang saya tambahkan semua file /libs/*.jar saya.
  • Tambahkan pustaka ke jalur build modul Anda melalui Module Settings (F4).
  • Tambahkan google-play-services-lib sebagai dependensi modul untuk project Anda.
  • Selesai!

Catatan: Ini juga tidak memberi saya pengecualian waktu proses, ini berfungsi.

Johan S
sumber
Saya mendapatkan kesalahan yang sama: R.java dan BuildConfig.java diduplikasi
androidtester
Apakah Anda memiliki modul sebagai ketergantungan kompilasi?
Johan S
Iya! Satu-satunya solusi adalah yang telah saya sebutkan sebelumnya (tidak termasuk folder Pratinjau)
androidtester
0

Buka file project build.gradle Anda dan tambahkan baris di bawah ini di bawah modul dependencies.

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

Di bawah ini akan ditambahkan Google Analytics dan Maps jika Anda tidak ingin mengintegrasikan perpustakaan penuh

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

Dalam kasus saya google-play-services_lib diintegrasikan sebagai modul (Libs Eksternal) untuk peta Google & GCM dalam proyek saya.

Sekarang, kali ini perlu menerapkan API Google Places Autocomplete tetapi masalahnya adalah kode itu baru dan libs saya sudah tua sehingga beberapa kelas tidak ditemukan:

mengikuti langkah-langkah ini ...

1> Perbarui layanan Google Play menjadi SDK Manager

2> pilih file .jar baru dari layanan google play ( Sdk / extras / google / google_play_services / libproject / google-play-services_lib / libs ) ganti dengan yang lama

saya sukses ... !!!

Dhruv Raval
sumber
-3

Saya menyalin file play libs dari google-play-services_lib ke direktori proyek libs saya:

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

Kemudian pilih mereka, klik kanan, "Tambahkan sebagai perpustakaan".

tolong hapus saya
sumber
1
Terima kasih atas jawaban Anda tetapi itu tidak berhasil untuk saya - ini mirip dengan sesuatu yang telah saya coba sebelumnya.
androidtester
Nasihat ini bertentangan dengan informasi lain yang saya baca di tempat lain. Jawaban yang ditautkan ke dalam jawaban pertama sudah tidak digunakan lagi karena menggunakan metode ini.
RevNoah