Pembaruan Perpustakaan Layanan Google Play dan simbol hilang @ integer / google_play_services_version

186

Saat memutakhirkan proyek saya ke versi Google Play Services terbaru ( v4.0, dirilis pada Halloween 2013 ), Anda sekarang seharusnya menambahkan tag baru ke dalam AndroidManifest.xmlfile.

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

Sayangnya, ketika saya mencoba melakukan itu, saya kemudian mendapatkan kesalahan kompilasi ini:

android-apt-compiler: /blahblah/AndroidManifest.xml:409: error: Error: No resource found that matches the given name (at 'value' with value '@integer/google_play_services_version').

Saya kemudian dapat menavigasi ke file di google-play-services_lib/res/values/version.xmldan melihat integer mentah untuk simbol itu:

<integer name="google_play_services_version">4030500</integer>

Dan kemudian masukkan kembali ke AndroidManifest.xml:

<meta-data
    android:name="com.google.android.gms.version"
    android:value="4030500" />

Melakukan ini bekerja dengan sangat baik dan saya kemudian dapat mengkompilasi dan menjalankan proyek dan aplikasi dengan baik. Tapi itu jelas merupakan perbaikan yang tidak diinginkan dengan masalah upgrade yang jelas.

Ada ide?

Charles Madere
sumber
memiliki masalah yang sama persis sekarang - tetapi tidak dapat menemukan integer.
Björn Hallström

Jawaban:

256

Untuk semua orang yang menggunakan Eclipse, ini adalah bagaimana Anda harus melakukannya.

Eclipse -> import -> kode android yang ada -> browse -> navigasi ke google-play-services_lib FOLDER (android-sdk / ekstra / google / google_play_services / libproject).

Kemudian, pada proyek Anda

kontrol klik -> properti -> android -> perpustakaan, tambahkan -> pilih proyek yang baru saja Anda impor -> ok

PSchuette
sumber
Saya sudah mencoba ini (mengikuti instruksi dari pertanyaan lain untuk menemukan folder), tetapi Eclipse mengatakan tidak dapat menulis .projectfile di google-play-services_libdirektori yang ditunjukkan . Jelas, alasan langsungnya adalah bahwa Eclipse tidak dapat menulis di direktori Program Files, di mana SDK berada, tetapi pertanyaan yang lebih konkret adalah mengapa memodifikasi .projectfile (yang tampaknya milik SDK dan karenanya harus "benar") diperlukan di tempat pertama.
ATAU Mapper
Saya belum pernah melihat ini sebelumnya jadi saya tidak tahu persis bagaimana cara memperbaikinya. Itu dalam pikiran, kecuali jika sudah dimodifikasi secara eksplisit, saya tidak berpikir ada kesalahan dalam folder. Mungkin saja itu sudah ketinggalan zaman dan perlu diunduh ulang (tidak mungkin menjadi masalah juga tetapi Anda tidak pernah tahu).
PSchuette
Apakah Anda mengalami kesalahan ini ketika mencoba menambah perpustakaan atau ketika mencoba mengimpor proyek?
PSchuette
Terima kasih - bekerja untuk saya, di Eclipse. Saya pikir saya telah melakukannya dengan benar, tetapi melakukannya kembali dan itu memperbaiki masalah kompiler.
Anna Billstrom
4
FOLDER yang perlu Anda impor ada di sini: ekstra \ google \ google_play_services \ libproject
Kamil Szot
78

Harap dicatat bahwa perbaikan ini hanya berlaku untuk pengguna IntelliJ !! (Informasi lebih lanjut di bagian bawah posting ini yang seharusnya berlaku untuk semua orang.)

Atasi masalah ini! Saya menggunakan IntelliJ dan ternyata saya baru saja salah mengonfigurasi cara saya memasukkan google-play-services_libmodul sebagai dependensi.

Karena saya memperbaiki ini sepenuhnya melalui GUI dan tidak sama sekali dengan mengedit file apa pun, berikut adalah beberapa tangkapan layar:

Langkah 1 - Struktur Proyek Awal Jadi Struktur Proyek saya mulai terlihat seperti ini ...

Langkah 2 - Pustaka layanan google-play-layanan yang dihapus Kemudian saya menghapus google-play-servicesperpustakaan dari daftar dependensi saya dengan memilihnya dan kemudian mengklik tombol minus di bagian bawah. Perhatikan kesalahan di bagian bawah dialog, karena proyek saya benar-benar membutuhkan pustaka ini. Tapi jangan khawatir, kami akan segera menambahkannya kembali!

Langkah 3 - Menambahkan layanan google-play-sebagai ketergantungan modul Selanjutnya saya menambahkan google-play-services_libsebagai ketergantungan modul bukan ketergantungan perpustakaan. Lalu saya tekan tombol panah atas di bagian bawah beberapa kali untuk memindahkan ketergantungan ini ke atas daftar. Tetapi perhatikan kesalahan di bagian bawah (kita masih belum selesai!)

Langkah 4 - Klik bola lampu untuk menambahkan perpustakaan layanan google-play-services sebagai ketergantungan Saya kemudian mengklik bola lampu di bagian bawah dialog di area pesan kesalahan untuk memunculkan popup kecil kecil ini yang memberikan dua pilihan ( Tambahkan ke dependensi ... atau Hapus Perpustakaan ). Klik opsi Tambahkan ke dependensi ... !

Langkah 5 - Tambahkan perpustakaan ke modul google-play-services_lib Jendela dialog kecil baru seharusnya muncul. Itu memberi saya dua pilihan, satu untuk proyek utama saya (namanya kabur), dan satu lagi untuk google-play-services_libproyek. Milik Anda mungkin lebih banyak tergantung pada proyek Anda (seperti yang Anda lihat actionbarsherlock, hal-hal seperti itu). Pilih google-play-services_libdan klik oke!

Dan akhirnya, Anda selesai! Saya harap ini membantu orang lain di luar sana!

Info lebih lanjut

Saya percaya alasan bahwa masalah ini terjadi adalah karena saya pikir saya telah memasukkan seluruh google-play-services_libproyek dengan baik ke dalam keseluruhan proyek saya ... tapi saya sebenarnya tidak, dan sebaliknya hanya memasukkan file jarnya dengan benar ( google-play-services_lib/libs/google-play-services.jar). File jar itu hanya mencakup kode, bukan nilai sumber daya Android, dan dengan demikian @integer/google_play_services_versionnilainya tidak pernah benar - benar ada di proyek saya. Tetapi kode tersebut dapat digunakan dalam proyek saya, dan itu membuatnya tampak seperti semuanya baik-baik saja.

Dan sebagai catatan tambahan, memperbaiki masalah ini juga tampaknya telah memperbaiki GooglePlayServicesUtil.getErrorDialog(...).show()crash yang dulu saya miliki. Tapi itu juga bisa diperbaiki dengan pembaruan, tidak benar-benar 100% yakin di sana.

Charles Madere
sumber
2
Tidak bekerja untukku. Saya tidak memiliki "bola lampu di bagian bawah dialog di area pesan kesalahan untuk memunculkan popup kecil kecil ini yang memberikan dua pilihan"
Vadorequest
2
Dalam kasus Anda, saya mungkin akan mencoba sepenuhnya menghapus Google Play Services dari proyek Anda dan kemudian mengimpor kembali. Karena masalah bilangan bulat yang hilang ini hanya terjadi jika Layanan Google Play diimpor dengan tidak semestinya, mungkin ide yang baik untuk memulai dari awal.
Charles Madere
1
@Vadorequest Anda juga dapat memilih modul google-play-services-lib dan menambahkan file google-play-services.jar sebagai dependensi modul (! Ke modul google-play-services-lib!)
Su-Au Hwang
2
Selain jawaban ini (khusus IntelliJ) Anda jika Anda berencana untuk benar-benar menggunakan metode perpustakaan / kelas, Anda harus pergi ke File> Struktur Proyek> pilih modul google-play-services_lib> Ketergantungan dan centang "Diekspor" untuk the google-play-services.jar
Su-Au Hwang
2
Rangkuman: tambahkan direktori libproject sebagai modul dan jadikan itu dependensi ke proyek utama Anda untuk mendapatkan nilai integer dari direktori
libproject
31

Saya menghadapi masalah yang sama, dan ternyata Eclipse entah bagaimana meninggalkan version.xmlfile dalam / res / values ​​dari google-play-services_libproyek asli sambil membuat salinan. Saya menarik file dari proyek asli dan menempelkannya di salinan proyek dan masalahnya sudah diperbaiki.

Atul Goyal
sumber
Ini adalah solusi yang juga memperbaiki saya, ini adalah pengawasan yang luar biasa oleh Google jika Anda bertanya kepada saya.
Henrique de Sousa
Terima kasih sobat, ini memperbaiki masalah saya
Fabii
1
Ini memperbaiki masalah saya. Mengapa impor gerhana melewatkan file ini? Ada petunjuk?
nizam.sp
24

Di Eclipse, setelah mengimpor perpustakaan google play ke ruang kerja proyek saya hanya menyalin file version.xml dari

google-play-services_lib/res/values/version.xml

untuk

MyProjectName/res/values/version.xml
Darragh O'Keeffe
sumber
3
Melakukan hal ini akan berhasil, tetapi masalahnya adalah membuat peningkatan ke versi yang lebih baru dari pustaka Layanan Google Play sedikit lebih menyebalkan. Anda mungkin harus mengganti version.xmlfile dengan setiap peningkatan.
Charles Madere
20

Bagi siapa pun yang menggunakan gradle: jangan sertakan sumber proyek, tetapi unduh dengan menggunakan SDK Manager dan tambahkan baris ini ke dependensi:

compile 'com.google.android.gms:play-services:4.0.30'
Sofi Software LLC
sumber
Hanya itu tidak menemukannya: Galat: Terjadi masalah saat mengonfigurasi proyek ': app'. > Tidak dapat menyelesaikan semua dependensi untuk konfigurasi ': app: _debugCompile'. > Tidak dapat menemukan versi apa pun yang cocok dengan com.google.android.gms: play-services: 6.1. +. Dicari di lokasi berikut: jcenter.bintray.com/com/google/android/gms/play-services/... jcenter.bintray.com/com/google/android/gms/play-services
matteo
file: /home/teo/Documents/programmi/android-studio-new/sdk/extras/android/m2repository/com/google/android/gms/play-services/maven-metadata.xml file: / home / teo / Documents / programmi / android-studio-new / SDK / ekstra / android / m2repository / com / google / android / gms / play-services / Diperlukan oleh: xxxxxxx: app: tidak ditentukan
matteo
Jalur tempat perpustakaan mencari tampaknya tidak cocok dengan lokasi di mana manajer sdk sebenarnya mengunduhnya, tetapi bahkan setelah membuat tautan simbolis, masalahnya tidak diperbaiki. Saya kira saya tidak dapat menemukan file atau folder apa yang sebenarnya perlu ditemukan. Ada ide?
matteo
1
Untuk melihat versi apa yang Anda miliki: "ls -1 $ ANDROID_HOME / extras / google / m2repository / com / google / android / gms / play-services". Untuk mendapatkan versi yang lebih baru, jalankan SDK manager dan perbarui komponen yang Anda inginkan. Jangan main-main dengan symlink.
Sofi Software LLC
12
  1. Instal "Google Play Services" dan "Google Repository" dari Android SDK Manager.
  2. Tambahkan baris compile 'com.google.android.gms:play-services:4.1.32@aar'ke build.gradle.
  3. Akibatnya sumber daya @integer/google_play_services_versionakan tersedia.
Andrey Grebnev
sumber
1
Saya menambahkan kompilasi ini 'com.google.android.gms: play-services: 4.4.52'
powder366
ini melakukannya untuk saya. Tidak ada yang mempublikasikan seperti apa hasil akhir dari bagian dependensi di build.gradle ... yang akan sangat membantu
snowking16
10

Tanpa sadar, rasanya proyek Anda terhubung ke versi yang lebih lama dari proyek perpustakaan Layanan Play. Pendekatan yang disarankan, oleh Google, adalah bagi Anda untuk menemukan proyek perpustakaan di SDK dan membuat salinan lokal. Namun, ini berarti bahwa setiap kali Anda memperbarui proyek perpustakaan Layanan Play melalui SDK Manager, Anda juga perlu mengganti salinan Anda dengan salinan baru.

CommonsWare
sumber
Ya, saya mengintegrasikan perpustakaan ke dalam proyek saya dengan menempatkan salinan file yang diunduh dengan Android SDK Manager ke direktori kerja saya. Saya juga memperbarui perpustakaan ke versi baru ini dengan melakukan hal yang sama (menyalin file dari direktori Android SDK dan menimpa yang sudah ada dalam proyek saya).
Charles Madere
7

setelah pembaruan ke versión terakhir saya punya masalah dengan semua proyek saya, tetapi diselesaikan hanya dengan menambahkan lagi referensi perpustakaan:

jika Anda tidak memiliki perpustakaan di ruang kerja Anda di Eclipse Anda dapat menambahkannya dengan: File-> Import-> Existing Android Code Into Workspace-> jelajahi dan navigasi ke google-play-services_libproject lib, ( android-sdk/extras/google/google_play_services/libproject).

masukkan deskripsi gambar di sini

kemudian menghapus /bindan /genfolder proyek saya (sesuatu yang mirip dengan opsi bersih) dan membangun proyek saya lagi.

Jorgesys
sumber
tapi ini membuat apk 5mb lebih berat
Siddharth
6

Dipecahkan untuk Eclipse

Ikuti langkah-langkah berikut:

  1. Impor folder google-play-services_lib sebagai proyek, menggunakan impor-> Kode Android yang Ada ke dalam Ruang Kerja
  2. Dari properti proyek pilih bagian Android, di bagian bawah Di bagian Perpustakaan klik Tambah dan pilih google-play-services_lib dan Terapkan Ikuti tautan http://i.stack.imgur.com/opSeJ.png untuk melihat tangkapan layar
Riccardo Pittiglio
sumber
Saya google-play-services_libberada diF:\Android\sdk\extras\google\google_play_services\libproject\google-play-services_lib
Daniel Bonetti
5

Situs Pengembang Android Google memiliki instruksi tentang cara "Menambahkan Layanan Google Play ke Proyek Anda", dan mereka juga relevan dengan cara meningkatkan versi Layanan Play. Bahkan ada menu drop down untuk melihat instruksi untuk Eclipse, Android Studio, atau "Sesuatu yang lain". Itu akan menjadi tempat terbaik untuk melihat instruksi jika mereka berubah. Halamannya ada di sini:

http://developer.android.com/google/play-services/setup.html

Tetapi karena sebagian besar jawaban di sini adalah untuk Eclipse, berikut adalah ringkasan singkat untuk memutakhirkan Layanan Play dengan Android Studio

  1. Buka file build.gradle di dalam direktori modul aplikasi Anda. Catatan: Proyek Android Studio berisi file build.gradle tingkat atas dan file build.gradle untuk setiap modul. Pastikan untuk mengedit file untuk modul aplikasi Anda.
  2. Perbarui aturan build di bawah "dependensi" untuk merujuk versi layanan bermain yang telah Anda unduh di mesin pengembangan Anda.

Anda dapat menemukan nomor versi untuk versi play-services yang telah Anda unduh di mesin pengembangan Anda dengan melihat di folder \ sdk \ ekstra \ google \ m2repositori \ com \ google \ android \ gms \ play-services, seperti dijelaskan di sini : Bagaimana cara mencocokkan revisi Google Play Services dengan versi instal?

Eric Barr
sumber
Akhirnya jawaban yang bagus dan jelas untuk pemula Android. Jawaban ini harus ditempatkan lebih tinggi.
Jelle
4

Untuk Eclipse, saya baru saja menambahkan referensi proyek ke google-play-services_lib di:

Properties-Android Di panel Library (panel bawah), pastikan bahwa google-play-services_lib terdaftar. Jika tidak, klik tombol Tambah .. dan pilih google-play-services_lib.

hNroid
sumber
3

Saya memiliki masalah yang sama, file version.xml tidak ada di google-play-services_lib. Mulai saja Anda manajer sdk dan terima pembaruan terutama hal-hal yang berkaitan dengan "ekstra".

pengguna2167877
sumber
2

Saat mengimpor google-play-services_lib, periksa kode versi yang ditentukan dalam AndroidManifest.xml dan version.xml. Saya telah menemukan perbedaan dalam kode versi dan mengubahnya ke 4242000 . Setelah melakukan perubahan, tidak ada lagi kesalahan kompilasi di @ integer / google_play_services_version .masukkan deskripsi gambar di sini

Shanki Bansal
sumber
2
Ini bukan cara yang baik untuk melakukannya. Anda harus memperbarui secara manual setiap kali Anda memperbarui Layanan Google Play.
PSchuette
2

Diperbaiki dengan menambahkan Layanan Google Play ke Modul saya: file build gradle aplikasi. Dokumentasi juga mengatakan untuk memperbarui versi ketika Anda memperbarui RUPS.

dependencies {

compile 'com.google.android.gms:play-services:9.6.1'

} 
Hugh Brady
sumber
1

Di bawah ini adalah tindakan utama yang akan menghindari banyak kesalahan saat menggunakan layanan Google play Lib:

  1. Pastikan untuk menyalin proyek lib ke ruang kerja proyek Eclipse.
  2. Target SDK untuk proyek layanan lib Google play adalah "Google
  3. API "3- Data meta harus ditambahkan ke file manifes.
  4. SDK target proyek Anda harus 17 kecuali Anda telah benar-benar diperbarui ke 19, karena dalam beberapa kasus 19 tidak berfungsi dengan baik.
Ayman Al-Absi
sumber
1

Saya memiliki masalah yang sama dengan proyek menggunakan Maven dan IntelliJ. Layanan Google Play ditambahkan sebagai ketergantungan maven. Bangunan pakar bekerja dengan baik dari baris perintah, tetapi IntelliJ mengeluh tentang simbol yang hilang ini@integer/google_play_services_version

Dalam kasus saya, saya memaksa pembaruan file POM maven dan itu memecahkan masalah.

Pierre Henry
sumber
1

Dalam kasus saya, saya harus menyalin FOLDER google-play-services_lib dalam DRIVE yang sama dengan kode sumber aplikasi saya

  • F: \ Products \ Android \ APP * .java <- Aplikasi Saya ada di sini jadi saya salin ke folder di bawah ini
  • F: \ Products \ Android \ libs \ google-play-services_lib
fedmich
sumber
1

Ketika tidak menggunakan IDE, tetapi menggunakan build baris perintah (menggunakan semut dan ndk-build), ini adalah cara mengatasinya:

Instal semua bagian yang diperlukan dengan perintah 'android'. Kemudian miliki salinan google-play-service_lib / di root proyek Anda. Edit project.properties untuk memasukkan baris ini:

android.library.reference.1=./google-play-services_lib
Bram
sumber
Tapi Anda perlu android update project -p . -t android-22di google-play-services_libpertama. Setara, tambahkan <property name="android.library.reference.1" value="./google-play-services_lib"/>ke Anda build.xml(saya meminimalkan build.xmldan membuang .properties).
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
0

Saya memiliki masalah yang sama. Masalahnya adalah "google-play-services.jar" tidak diimpor dengan benar ke proyek saya meskipun itu adalah bagian dari proyek google_play_service_lib. Jika Anda menggunakan Eclipse, silakan periksa dan lihat apakah Anda dapat melihat file jar layanan putar di bagian Android Private Libraries dan apakah ini diekspor oleh perpustakaan.

Saya menggunakan alat platform Android SDK versi 17 (bukan 19) dan perangkat Android SDK versi 22.0.1

Punit Raizada
sumber
0

Saya baru saja memperbarui layanan Google Play di bawah folder Extras di Android SDK Manager

KarenAnne
sumber
0

Masalahnya bagi saya adalah bahwa proyek perpustakaan dan proyek yang menggunakan layanan bermain berada di direktori yang berbeda. Jadi hanya:

  • 1. Tambahkan file ke ruang kerja yang sama lalu hapus pustaka.
  • 2. Mulai ulang gerhana
  • 3. Tambahkan proyek perpustakaan lagi
  • 4.Clear
makkasi
sumber
0

Google menyarankan Anda untuk tidak membuat proyek langsung dari direktori SDK. Lebih baik menyalin proyek lib ke lokasi di mana aplikasi Anda, lalu mengimpornya dari sana. Kalau tidak, lain kali Anda pergi untuk mengimpor proyek untuk aplikasi lain, itu sudah akan digunakan.

https://developer.android.com/google/play-services/setup.html

Catatan: Anda harus mereferensikan salinan pustaka yang telah Anda salin ke ruang kerja pengembangan Anda - Anda tidak boleh merujuk pustaka secara langsung dari direktori Android SDK.

Shygar
sumber
0

Siapa pun yang mencari di tahun 2017, versi 10.0.1 dari layanan permainan harus mengimpor play-services-basement(gunakan untuk berada di play-services-base).

goobliata
sumber
Bisakah Anda jelaskan sedikit lebih banyak? Bagaimana saya melihat dependensi saat ini dan bagaimana cara menambahkan lebih banyak?
Hassan Gulzar
Saya melakukan semuanya secara manual dan melalui coba-coba ketika saya menulis jawaban ini. Menggunakan gradle membuat segalanya lebih mudah.
goobliata
0

Android Studio 3.3.2 di bawah Windows 10

File -> Batalkan Cache / Restart dan pilih invalidate and Restarttombol dalam dialog muncul.

tidak hadir
sumber
0

Saya memiliki masalah yang sama, tambahkan 2 baris ini di build.gradle Anda masalahnya mungkin akan teratasi. ;)

dependencies {  
  implementation 'com.google.android.gms:play-services:12.0.1'  
  implementation 'com.google.android.gms:play-services-vision:10.0.0'    
}
Amin Najafloo
sumber