Hilang api_key / kunci saat ini dengan Google Services 3.0.0

157

Karena saya memutakhirkan proyek dengan versi terbaru dari layanan dan perpustakaan google (9.0.0), saya memiliki masalah aneh ini:

Kesalahan membangun

Konsol kelas:

:app:processDebugGoogleServices
Parsing json file: /Users/cyrilmorales/Documents/Projects/mobilemeans-punainenristi/app/google-services.json
:app:processDebugGoogleServices FAILED
Error:Execution failed for task ':app:processDebugGoogleServices'.
> Missing api_key/current_key object
Information:BUILD FAILED

build.gradle (root):

dependencies {
    classpath 'com.android.tools.build:gradle:2.2.0-alpha1'
    classpath 'com.google.gms:google-services:3.0.0'
}

build.gradle (aplikasi):

dependencies {
    ....
    compile 'com.google.android.gms:play-services-analytics:9.0.0'
    compile 'com.google.android.gms:play-services-gcm:9.0.0'
    compile 'com.google.android.gms:play-services-maps:9.0.0'
    compile 'com.google.android.gms:play-services-location:9.0.0'
    ...
}
apply plugin: 'com.google.gms.google-services'

Namun, ini berfungsi baik dengan pustaka layanan play di 8.4.0 dan google-services 2.1.0

Apakah Anda tahu solusinya?

telapak tangan
sumber
Saya menggunakan peta dan saya memiliki api_key didefinisikan dalam file AndroidManifest.xml. Apakah Anda punya api_key di sana? Sesuatu seperti itu <meta-data android: name = "com.google.android.geo.API_KEY" android: value = "AIzaSdfdfdfdfdfdfdfdfdRVxThQsNaqY" />
Grzegorz Bielański
Ya saya memilikinya. Manifestasinya terkonfigurasi dengan baik, selalu berfungsi .. hingga sekarang.
Telapak tangan

Jawaban:

162

Hasilkan file konfigurasi baru (google-services.json) dari: https://developers.google.com/cloud-messaging/android/client#get-config

File konfigurasi baru dengan "api_key": [ { "current_key": XXX } ]di bagian klien

Perbarui: atau layanan yang diaktifkan secara manual di konsol pengembang dan buat kunci.

Jozka Jozin
sumber
1
Yang baru ada di file conf "api_key": [{"current_key": XXX}]
Jozka Jozin
1
Kunci API mana yang harus ada di sana?
Marco Zanetti
8
Anda harus mengaktifkan Cloud Messaging bahkan jika Anda tidak menggunakannya dan menghasilkan file json baru. Saat Anda mengaktifkan Cloud Messaging, Anda mendapatkan kunci API yang membutuhkannya.
Rafael Gutiérrez
2
Saya mendapatkan kunci API dalam file JSON dengan mengaktifkan Cloud Messaging API "api_key": [{"current_key": "the_api_key"}], tetapi masih tidak berfungsi. Saya tidak benar-benar tahu apa yang salah dengan itu. : - /
Marco Zanetti
7
Siapa yang tahu untuk apa api_key ini? Itu bekerja dengan baik tanpa itu sebelumnya ...
Pavel Biryukov
89

Menambahkan nilai kunci kosong saat ini di file google-services.json memecahkan masalah ini untuk saya

"api_key": [{ "current_key": "" }]

Ajax - Max
sumber
1
Hanya pikir saya akan menambahkan bahwa "api_key" nilai adalah dalam nilai "klien"
Jan
2
@Ajax-the Max: Ini bekerja untuk saya juga. Bisakah Anda berbaik hati menjelaskan mengapa ini berhasil?
Pineda
1
ini tampaknya solusi terbaik jika menggunakan pesan cloud GMS lama. File konfigurasi baru mengecualikan kunci GMS alih-alih menambahkan Firebase.
GordonW
34

Ya, seperti untuk pertama kalinya menggunakan Firebase, saya hadapi seperti itu. Klik menu aplikasi Anda dan klik "Kelola".

masukkan deskripsi gambar di sini

Anda dapat mengunduh google-services.json lagi.

masukkan deskripsi gambar di sini

Htoo Aung Hlaing
sumber
2
ya saya mengunduhnya lagi dan itu file yang lebih besar di waktu berikutnya dan ini memperbaiki masalah bagi saya
Hatem Badawi
1
Saya dapat mengonfirmasi: Saya mendaftar ke Firebase Analytics dan secara otomatis mengunduh google-services.json yang tidak mengandung kunci API. Kemudian saya mengunduhnya secara manual seperti ini dan kunci API ada di json.
chichilatte
Apa URL untuk sampai ke dasbor ini?
Pantai Sean
9

Untuk semua orang yang memiliki masalah ini, untuk saat ini, Anda harus menambahkan layanan apa pun ke aplikasi Anda di https://developers.google.com/cloud-messaging/android/client#get-config

Dalam kasus saya, saya telah menambahkan AdMob (sudah memiliki analytics dan gcm) dan kemudian file tersebut dihasilkan dengan api_key.

Saya pikir itu adalah bug dan akan segera diperbaiki, sampai selesai, lakukanlah.

Elvis Oliveira
sumber
memang ada bug ... saya harus menambahkan undangan aplikasi juga untuk mendapatkan json baru
Jivraj S Shekhawat
hai, saya menambahkan konfigurasi baru, tetapi IDE masih mengeluh bahwa itu hilang api_key
kode
Sebelum Anda membuka IDE, Anda dapat memeriksa file konfigurasi untuk memastikan ada s 'api_key' value. Clearly therebug, jadi kami perlu mencoba pendekatan yang berbeda untuk menyelesaikan masalah.
Elvis Oliveira
apakah itu berarti, setiap kali saya menambahkan ketergantungan baru pada file gradle saya, saya harus mengunduh google-services.json baru karena itu menghasilkan api_key baru?
Ashok Bijoy Debnath
8

Meskipun Jozka Jozin menerima jawaban dan komentarnya, Cloud Messaging tidak terkait atau diperlukan.

Namun demikian, menghasilkan kembali google-services.jsonadalah kunci untuk solusi (jadi saya memilihnya). Di bawah ini yang saya lakukan:

Seperti yang Anda ketahui, Anda dapat membuat file konfigurasi untuk Analytics dari Google Developers Guide .

1: Pilih aplikasi Anda.

1) pilih aplikasi

2: Tutup sembulan! Itu menyembunyikan ...

Tutup munculan!

3: PILIHAN ADMOB!

opsi tersembunyi dari admin

4 : Tentu saja, pilih dan aktifkan!

aktifkan!

5: Sekarang kita dapat menghasilkan file konfigurasi dengan benar!

menghasilkan file konfigurasi

6: Kami berhasil! Kali ini, file konfigurasi harus menyertakan api_key dengan tepat.

kita berhasil!

Kesimpulan: UI dari alat generasi interaktif ini agak membingungkan ...

hata
sumber
1
terima kasih, saya bisa mendapatkan konfigurasi baru, tetapi IDE masih mengeluh bahwa itu hilang api_key
kode
Sebuah sedikit membingungkan ... Hal ini mengerikan !!! Kudos untuk penjelasan Anda yang jelas.
Niels
7

Anda dapat mengunduh google-services.jsonfile lagi.

Langkah-langkah untuk mengunduh:

1). Klik menu paling atas di aplikasi Anda di FirebaseKonsol.

2). Klik kelola.

3). Anda akan menemukan Download the latest configopsi file, mengunduh dan mengganti google-services.jsonfile di aplikasi Anda.

Anubhav
sumber
4

Pertama di file JSON Anda

Menggantikan

"api_key": []

dengan

"api_key": [{ "current_key": "" }]

Maka pembangunan gradle akan berhasil tetapi ketika Anda menjalankan aplikasi Anda, Anda mungkin mendapatkan kesalahan seperti berikut ini ..

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/LICENSE
    File1: C:\Users\bucky\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-core\2.2.2\d20be6a5ddd6f8cfd36ebf6dea329873a1c41f1b\jackson-core-2.2.2.jar
    File2: C:\Users\bucky\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-databind\2.2.2\3c8f6018eaa72d43b261181e801e6f8676c16ef6\jackson-databind-2.2.2.jar
    File3: C:\Users\bucky\.gradle\caches\modules-2\files-2.1\com.fasterxml.jackson.core\jackson-annotations\2.2.2\285cb9c666f0f0f3dd8a1be04e1f457eb7b15113\jackson-annotations-2.2.2.jar

Untuk memperbaiki masalah ini, Anda dapat menambahkan berikut ini ke file app.gradle Anda .. Ini berhasil untuk saya.

packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/ASL2.0'
    }

Sunting: Ini menunjukkan kepada saya beberapa kesalahan kemudian saat membangun file apk. Jadi saya harus mengunduh file json lagi. Setelah 2 percobaan saya mendapat file json dengan kunci api yang valid.

Doge
sumber
3

Jika Anda tidak menggunakan Firebase, tautan yang benar untuk menghasilkan file konfigurasi google-services.json sebenarnya ditemukan di sini .

Phileo99
sumber
2

regenerasi google-services.json di https://developers.google.com/cloud-messaging/android/client#get-config , satu hal penting adalah Anda harus mengaktifkan Cloud Messaging dalam langkah "Choose services" , buka google baru File -services.json Anda akan melihat kata-kata seperti

    "api_key": [
     {
       "current_key": "xxxxxxxxxxx"
     }"

tanpa kata-kata ini atau tanpa nilai current_key bukan file yang tepat

dx3906
sumber
2

Saya bisa menyelesaikan masalah ini dengan langkah-langkah ini yang tidak dijawab di sini. Jawaban ini TIDAK mengaktifkan Cloud Messaging, itu hanya mengambil kunci servernya.

Jadi pertama-tama, buka Firebase Console, dan kemudian pergi ke Pengaturan Proyek, lalu klik pada tab "Cloud Messaging". Lihat di mana tertulis "kunci server" dan jika tidak ada tombol panjang yang menampilkan (bukan nomor "Pengirim") klik "Regenerate Key" dan kunci panjang sekarang akan ditampilkan. Salin kunci itu dan letakkan di file google-services.json Anda di:"api_key": [ {"current_key" : "key goes here"} ] .

Metode ini membantu saya ketika tidak ada yang lain bekerja, jadi semoga ini membantu seseorang.

David Velasquez
sumber
2

masukkan deskripsi gambar di sini

Klik Ikhtisar -> ikon roda gigi -> Pengaturan proyek.

masukkan deskripsi gambar di sini

Pergi ke Unduh konfigurasi terbaru dan Klik tombol google-service.json untuk mengunduh file dan menyimpannya ke folder aplikasi dan Kompilasi lagi. Nikmati!

Pinkesh Darji
sumber
2

Anda perlu menambahkan sidik jari sertifikat SHA ke proyek Anda dan kemudian mengunduh lagi file google-services.jason, yang seharusnya berisi "api_key": [{"current_key": "xxxxxx"}] secara otomatis.

Anda dapat melihat halaman berikut untuk melihat cara membuat sidik jari:

https://developers.google.com/android/guides/client-auth

Di windows, cukup jalankan perintah berikut, dan gunakan android sebagai kata sandi untuk tujuan debug:

keytool -exportcert -list -v -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
Hexise
sumber
1

Menggunakan Firebase

GoogleServices'. > Missing api_key/current_key object

Saya mendapatkan kesalahan ini setelah memperbarui proyek yang ada ke Layanan Firebase baru. File google-service.json yang dihasilkan yang diunduh dari halaman pengaturan proyek firebase tidak termasuk yang api_keydiperlukan.

Dari jawaban lain di sini, sepertinya Google / Firebase Cloud Messaging (GCM / FCM) perlu ditambahkan agar ini api_keydimasukkan dalam google-service.jsonfile.

Jadi saya menambahkan dependensi pada firebase FCM sebelum mengunduh file lagi, dan kali ini kuncinya dimasukkan.

Termasuk FCM (GCM)

dependencies {
     compile 'com.google.firebase:firebase-messaging:9.0.0'
}
TouchBoarder
sumber
1

Jika Anda tidak ingin mengkonfigurasi ulang dan mengunduh google-services.jsonfile maka Anda dapat mengambil kunci api langsung dari konsol firebase. Pergi saja ke

Tinjauan Umum> Tambahkan Aplikasi lain> Web

Anda akan mendapatkan konfigurasi untuk database Anda yang akan berisi apiKey. Cukup salin nilai itu dan tempatkan dalam current_keynilai yang ditunjukkan oleh XXX di bawah ini

"api_key": [{ "current_key": "XXX" }]
Shakti
sumber
0

Untuk migrator firebase:

pastikan Anda telah menambahkan setidaknya satu Sidik Jari dalam pengaturan proyek Anda dan unduh kembali file google-services.json

Su-Au Hwang
sumber
Terima kasih sobat, saya pergi sesuai instruksi lab kode dan tidak menambahkan kunci SHA1 pada awalnya. Kemudian saya harus menambahkan sebagai ApiKey saya - CurrentKey hilang. Tidak yakin apakah itu yang terjadi atau tidak. Tapi itu menyelesaikan masalah saya.
Rana Ranvijay Singh
0

Jika Anda menggunakan firebaes, Anda harus menyalin serverKey dari firebase ke google-services.json

 "api_key": [{ "current_key": "SERVER_KEY"}

Untuk mendapatkan Kunci server, Goto ProjectOverview> Pengaturan Proyek> CloudMessaging> Salin ATAU buat dan salin serverKey ..

Tarun Voora
sumber
0

tambahkan ini ke file google-service.json Anda. Anda akan menemukannya di app / google-service.json

"api_key": [{"current_key": "your-google-api-key"}]

Hamza Fareed
sumber