GoogleService gagal dimulai

113

Saya menggunakan Google Maps di aplikasi android saya. Saya telah membuat kunci dan menambahkan izin yang diperlukan dalam file manifes. Tetapi segera saya memulai aplikasi, saya mendapatkan pesan ini di debugger:

GoogleService gagal menginisialisasi, status: 10, Kehilangan sumber daya yang diharapkan: 'R.string.google_app_id' untuk menginisialisasi layanan Google. Kemungkinan penyebab tidak ada plugin gradle google-services.json atau com.google.gms.google-services.

Saya tidak yakin apa yang salah. Peta berfungsi dengan baik dan saya dapat menggunakannya tanpa masalah. File gradle saya memiliki entri ini:

kompilasi 'com.google.android.gms: play-services: 8.4.0'

Apa yang dikeluhkan dan bagaimana cara meredakannya?

Zach
sumber
apakah ini dalam manifes Anda: <meta-data android: name = "com.google.android.gms.version" android: value = "@ integer / google_play_services_version" />
j2emanue
Saya telah mencoba keduanya tetapi masih mendapatkan pesan yang sama!
Zach
1
Apakah layanan perangkat bermain Anda diperbarui?
Abhigyan
Tidak satu pun dari solusi ini yang berfungsi, tetapi memperbarui APK Layanan sepertinya berhasil!
midoriha_senpai

Jawaban:

38

Anda perlu menempatkan file konfigurasi ( google-services.json) yang dihasilkan oleh developer.google.com , seperti yang disebutkan pada langkah kedua dari dokumen resmi di sini

Prosesnya sederhana

  1. Anda dapat memilih proyek Anda atau membuat yang baru.
  2. Kemudian setelah memilih layanan yang diinginkan (dalam hal ini layanan peta), Anda dapat membuat file konfigurasi.

    Bagi orang-orang yang telah bermigrasi ke proyek Firebase, mereka bisa mendapatkan hal yang sama dengan membuka Konsol Firebase , memilih proyek Anda dan di bawah pengaturan Anda akan menemukan file konfigurasinya.

  3. Kemudian seperti yang dikutip pada langkah 3 dari dokumen resmi di sini

    Salin google-services.jsonfile yang baru saja Anda unduh ke direktori app / atau seluler / Android Anda

PS: Untuk orang-orang yang tidak menyukai jawaban ini, mohon berikan komentar mengapa Anda tidak memberikan suara itu.

Nishant.
sumber
6
Apakah kami benar-benar membutuhkan ini di aplikasi kami dengan versi baru Layanan Google Play? Atau hanya untuk masuk dengan Google? Tampaknya aneh bahwa log memberi saya kesalahan seolah-olah saya membutuhkannya, tetapi saya mungkin tidak
RED_
2
@Radix ... Saya mengunjungi tautan yang Anda bagikan, tetapi tautan itu meminta saya untuk mendaftar ke Google Sign In atau Google Cloud Messaging ... tidak ada apa-apa tentang peta. Ada ide? Juga, menyalin file json ini ke kanan di bawah / app agak aneh ... bisakah Anda menjelaskan? Terimakasih banyak!
Johnny Wu
2
Kami sudah memiliki google-services.json di aplikasi kami, tetapi kami harus membuatnya kembali saat meningkatkan ke 8.4.0.
Roy Solberg
1
masalah yang sama, menambahkan google-services.json tidak membantu, hal aneh yang tidak melihat gcm saya yang sudah diaktifkan dan ingin membuat kunci server sendiri setiap kali
Andrew V.
11
Lihat tanggapan yang benar di sini dari manajer produk di Google: stackoverflow.com/questions/34365369/…
Ahmed Mounir
52

[Dari Manajer Produk @ Google]

Anda dapat memperbaiki masalah ini dengan mengunduh dan menyalin google-services.jsonfile untuk aplikasi Android Anda dengan mengikuti langkah-langkah di bawah ini:

  • Pilih nama aplikasi / proyek dan nama paket Android Anda dari tautan ini dan klik Continue to Choose and configure services.
  • Klik Continue to Generate Configuration files.
  • Download google-services.jsondan salin file ke direktori modul app/atau mobile/di proyek Android Anda.

Jika sebelumnya Anda telah mengimpor proyek Google Anda ke Firebase, Anda bisa mendapatkan google-services.json yang telah diperbarui dari konsol Firebase di bawah Setelan Proyek.

JANGAN SALIN PROJECT_NUMBER seperti yang disarankan oleh salah satu jawaban lain karena google_app_id merujuk pada aplikasi Anda dalam sebuah Proyek dan bukan proyek itu sendiri.

Sriram
sumber
1
Untuk orang yang menggunakan plugin eksperimental gradle, google-services.json tidak akan berpengaruh secara langsung. Silakan merujuk ke stackoverflow.com/a/38097895/457137 untuk solusi.
zevoid
Mengapa wajib menyertakan file json? Mengapa saya tidak dapat memberikan id saat runtime dalam kode?
der_michael
File masuk / app dir, bukan dir level atas?
IgorGanapolsky
11

Dalam kasus saya, penyebab kesalahan ini adalah plugin Layanan Google untuk Gradle dan pustaka Layanan Play merupakan versi yang tidak kompatibel. Petunjuk untuk versi yang kompatibel:

1) Tambahkan dependensi ke build.gradle tingkat proyek Anda:

classpath 'com.google.gms:google-services:1.5.0-beta2'

2) Tambahkan plugin ke build.gradle tingkat aplikasi Anda:

apply plugin: 'com.google.gms.google-services'

3) Jika Anda menggunakan Android Studio, ini adalah string yang akan ditambahkan ke bagian dependensi file build.gradle aplikasi Anda:

dependencies {
  compile "com.google.android.gms:play-services:8.3.0"
}

Sumber: https://developers.google.com/cloud-messaging/android/client

13rac1
sumber
1
Terima kasih, tetapi ini tidak berhasil untuk saya - Android Studio bersikeras bahwa saya juga menginstal file google-services.json, meskipun saya pikir itu tidak perlu jika Anda mengikuti tiga langkah di atas yang seharusnya mengesampingkan kebutuhan akan file tersebut? Yang membuat saya bertanya: Mengapa saya memerlukan sistem Masuk Pengguna Google jika yang saya berikan hanyalah pemetaan dasar?
iaindownie
1
Solusi saya tidak terdaftar, jadi saya menjawab pertanyaan untuk memberi orang solusi potensial lain untuk masalah ini. Dalam kasus Anda, Anda mungkin menginstal pustaka tambahan. Coba gunakan hanyacom.google.android.gms:play-services-maps:8.4.0
13rac1
@eosrei, hanya menggunakan com.google.android.gms: play-services-maps: 8.4.0 bekerja untuk saya, terima kasih!
akshay7692
4

Saya menemui masalah yang sama dan menyelesaikannya mengikuti solusi resmi .

Berikut langkah-langkahnya:

  1. dapatkan file konfigurasi google-services.jsondari tautan ini .

  2. Salin google-services.jsonfile yang baru saja Anda unduh ke direktori app / atau mobile / proyek Android Studio Anda.

  3. Tambahkan dependensi ke build.gradle tingkat proyek Anda:

    classpath 'com.google.gms:google-services:1.5.0-beta2'
  4. Tambahkan plugin ke build.gradle tingkat aplikasi Anda:

    apply plugin: 'com.google.gms.google-services'
  5. Tambahkan dependensi ini ke build.gradle level aplikasi Anda:

    dependencies {
        compile "com.google.android.gms:play-services:8.3.0"
    }
    
Akan
sumber
1
Saya pikir lebih baik menggunakan com.google.gms: google-services: 1.5.0 karena lebih baik daripada versi beta untuk menghapus beberapa kesalahan tak terduga di aplikasi Anda.
Andrew V.
@Distroartonline. Ya saya setuju. Versi "1.5.0-beta2" disalin dari tautan yang saya berikan di atas.
Akankah
1

Bagi mereka yang menghadapi masalah ini bahkan setelah mengatur layanan bermain dengan benar dan menempatkan google-services.jsonfile di project/appfolder, solusi sebenarnya adalah

Build > Rebuild Project

Mungkin karena fakta bahwa string dari file json tidak diintegrasikan ke dalam sumber daya yang dikompilasi sampai pembangunan ulang lengkap dilakukan.

anandbibek
sumber
1

Untuk Xamarin / Visual Studio Mac saya perlu menambahkan ini ke bagian bawah Droid.csproj saya

<Target Name="ProcessGoogleServicesJson" Condition=" '@(GoogleServicesJson)' != '' AND '$(AndroidApplication)' == 'True' AND '$(DesignTimeBuild)' != 'True'" BeforeTargets="$(ProcessGoogleServicesJsonBeforeTargets)" AfterTargets="$(ProcessGoogleServicesJsonAfterTargets)">
<Message Text="Using ProcessGoogleServicesJson override" Importance="high" />
<ProcessGoogleServicesJson GoogleServicesJsons="@(GoogleServicesJson)" IntermediateOutputPath="$(IntermediateOutputPath)" MonoAndroidResDirIntermediate="$(MonoAndroidResDirIntermediate)" AndroidPackageName="$(_AndroidPackage)">
    <Output ItemName="_AndroidResourceDest" TaskParameter="GoogleServicesGeneratedResources" />
    <Output ItemName="FileWrites" TaskParameter="GoogleServicesGeneratedResources" />
</ProcessGoogleServicesJson>
<ItemGroup>
    <FileWrites Include="$(IntermediateOutputPath)\ProcessGoogleServicesJson.stamp" />
</ItemGroup>

https://github.com/xamarin/GooglePlayServicesComponents/issues/64

stepheaw
sumber
0

Saya memiliki masalah yang sama saat itu. Mampu menyelesaikannya hanya dengan menggunakan perpustakaan layanan bermain yang diperlukan, yang dalam kasus saya GCM.

Alih-alih com.google.android.gms:play-services:8.4.0, saya gunakan com.google.android.gms:play-services-gcm:8.4.0. Lihat di sini untuk info lebih lanjut; ini juga memecahkan masalah multidex.

Kemudian saya menerapkan pendekatan @Radix dan @ Alexander untuk menghapus pesan yang telah dikeluarkan GCM di logcat terkait file google-services.json.

emen
sumber
0

Anda dapat mengubah versionCodedan versionNamedari aplikasi Anda di file Gradle.

F. Miliard
sumber
0

Sebuah perbaikan cepat saya digunakan adalah untuk penandatanganan menonaktifkan. Jika tidak ingin membuat kode produksi, Anda dapat menyetel varian build ke debug, localOldDebug, atau localDebug.

Klik Build Variants di kiri bawah di Android Studio.

cara-untuk-menonaktifkan-dibuat-ditandatangani-apk-android-studio

Dudas
sumber
dapat mengajukan pertanyaan sebagai komentar
jjj
-2

Hanya punya solusi lain yang saya hapus secara tidak sengaja

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
        .findFragmentById(R.id.map);
mapFragment.getMapAsync(this);

Tambahkan ini dan bekerja, untuk solusi baru

Cazs
sumber