ไม่พบ api_key / คีย์ปัจจุบันด้วย Google Services 3.0.0


157

เนื่องจากฉันอัปเกรดโครงการด้วยบริการและไลบรารีของ Google รุ่นล่าสุด (9.0.0) ฉันมีปัญหาที่แปลกประหลาดนี้:

เกิดข้อผิดพลาดในการสร้าง

คอนโซลเกรด:

: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 (แอป):

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'

อย่างไรก็ตามมันทำงานได้ดีกับห้องสมุดบริการการเล่นใน 8.4.0 และ google-services 2.1.0

คุณมีความคิดในการแก้ปัญหาหรือไม่?


ฉันใช้แผนที่และฉันได้กำหนด api_key ในไฟล์ AndroidManifest.xml แล้ว คุณมี api_key อยู่ที่นั่นไหม? บางอย่างเช่นนั้น <meta-data android: name = "com.google.android.geo.API_KEY" android: value = "AIzaSdfdfdfdfdfdfdfdfdfdfdfDFVThThQsNaqY" />
Grzegorz Bielański

ใช่ฉันมีมัน รายการได้รับการกำหนดค่าไว้อย่างดีมันใช้งานได้เสมอ .. จนถึงตอนนี้
palmsnipe

คำตอบ:


162

สร้างไฟล์ปรับแต่งใหม่ (google-services.json) จาก: https://developers.google.com/cloud-messaging/android/client#get-config

เพิ่งกำหนดค่าไฟล์ด้วย"api_key": [ { "current_key": XXX } ]ในส่วนลูกค้า

อัปเดต:หรือเปิดใช้งานบริการด้วยตนเองในคอนโซลผู้พัฒนาและสร้างคีย์


1
ใหม่อยู่ในไฟล์ conf "api_key": [{"current_key": XXX}]
Jozka Jozin

1
คีย์ API ใดควรไปที่นั่น
Marco Zanetti

8
คุณต้องเปิดใช้งาน Cloud Messaging แม้ว่าคุณจะไม่ได้ใช้งานและสร้างไฟล์ json ใหม่ เมื่อคุณเปิดใช้งาน Cloud Messaging คุณจะต้องได้รับคีย์ API สำหรับมัน
Rafael Gutiérrez

2
ฉันได้รับคีย์ API ในไฟล์ JSON โดยเปิดใช้งาน Cloud Messaging API "api_key": [{"current_key": "the_api_key"}] แต่ก็ยังใช้งานไม่ได้ ฉันไม่รู้จริงๆว่าเกิดอะไรขึ้นกับมัน : - /
Marco Zanetti

7
ใครจะรู้ว่า api_key นี้มีไว้เพื่อใคร มันใช้งานได้ดีโดยไม่ต้องใช้มาก่อน ...
Pavel Biryukov

89

การเพิ่มค่าคีย์ว่างเปล่าปัจจุบันในไฟล์ google-services.json แก้ปัญหานี้ให้ฉัน

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


1
แค่คิดว่าฉันจะเพิ่มว่าค่า "api_key" อยู่ในค่า "ลูกค้า"
Jan

2
@ Ajax-Max: มันก็ใช้ได้กับฉันเหมือนกัน คุณจะกรุณาอธิบายว่าทำไมสิ่งนี้ถึงได้ผล
Pineda

1
นี่น่าจะเป็นทางออกที่ดีที่สุดหากใช้การส่งข้อความบนคลาวด์ GMS แบบเก่า ไฟล์กำหนดค่าใหม่ไม่รวมคีย์ GMS แทนการเพิ่ม Firebase
GordonW

34

ใช่เป็นครั้งแรกที่ใช้กับ Firebase ฉันเผชิญเช่นนั้นคลิกที่เมนูแอปของคุณแล้วคลิก "จัดการ"

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถดาวน์โหลด google-services.json อีกครั้ง

ป้อนคำอธิบายรูปภาพที่นี่


2
ใช่ฉันดาวน์โหลดมันอีกครั้งและมันก็เป็นไฟล์ที่ใหญ่กว่าในครั้งต่อไปและวิธีนี้จะแก้ไขปัญหาให้ฉันได้
Hatem Badawi

1
ฉันสามารถยืนยันได้: ฉันสมัครใช้งาน Firebase Analytics แล้วและจะดาวน์โหลด google-services.json ที่ไม่มีรหัส API โดยอัตโนมัติ จากนั้นฉันดาวน์โหลดด้วยตนเองเช่นนี้และคีย์ API อยู่ใน json
chichilatte

URL ที่จะไปที่แผงควบคุมนี้คืออะไร?
Sean Beach

9

สำหรับทุกคนที่มีปัญหานี้ในตอนนี้คุณจะต้องเพิ่มบริการใด ๆ ลงในแอพของคุณที่https://developers.google.com/cloud-messaging/android/client#get-config

ในกรณีของฉันฉันได้เพิ่มผู้ดูแลระบบ (มีการวิเคราะห์และ gcm แล้ว) และจากนั้นไฟล์ที่ถูกสร้างขึ้นด้วย api_key

ฉันคิดว่ามันเป็นข้อบกพร่องและจะได้รับการแก้ไขในไม่ช้าจนกว่าจะทำ


แน่นอนว่ามีข้อผิดพลาด ... ฉันต้องเพิ่มแอพเชิญด้วยเพื่อรับ json ใหม่
Jivraj S Shekhawat

สวัสดีฉันได้เพิ่มการกำหนดค่าใหม่ แต่ IDE ยังคงบ่นว่ามันหายไป api_key
รหัส

ก่อนที่คุณจะเปิด IDE คุณสามารถตรวจสอบไฟล์กำหนดค่าเพื่อให้แน่ใจว่ามีs 'api_key' value. Clearly thereข้อผิดพลาดดังนั้นเราจึงต้องลองวิธีต่างๆในการแก้ปัญหา
Elvis Oliveira

หมายความว่าทุกครั้งที่ฉันเพิ่มการอ้างอิงใหม่ในไฟล์ gradle ของฉันฉันต้องดาวน์โหลด google-services.json ใหม่เนื่องจากมันสร้าง api_key ใหม่
Ashok Bijoy Debnath

8

ถึงแม้ว่า Jozka Jozin จะได้รับคำตอบและความเห็นของ Cloud Messaging ก็ไม่เกี่ยวข้องหรือไม่จำเป็น

อย่างไรก็ตามการสร้างใหม่google-services.jsonเป็นกุญแจสำคัญในการแก้ปัญหา (ดังนั้นฉันจึงโหวตให้เขา) ด้านล่างเป็นสิ่งที่ฉันทำ:

อย่างที่คุณทราบคุณสามารถสร้างไฟล์กำหนดค่าสำหรับ Analytics ได้จากคู่มือนักพัฒนาซอฟต์แวร์ของ Googleคู่มือการพัฒนาของ

1: เลือกแอปของคุณ

1) เลือกแอป

2: ปิดป๊อปอัป! มันซ่อน ...

ปิดป๊อปอัป!

3: ตัวเลือกของ ADMOB!

ตัวเลือกที่ซ่อนของผู้ดูแลระบบ

4: แน่นอนเลือกและเปิดใช้งาน!

เปิดใช้งานมัน!

5: ตอนนี้เราสามารถสร้างไฟล์กำหนดค่าได้อย่างถูกต้อง!

สร้างไฟล์การกำหนดค่า

6: เราสร้างมันขึ้นมา! เวลานี้ไฟล์กำหนดค่าควรมีapi_keyอย่างเหมาะสม

เราทำได้!

สรุป: UI ของเครื่องมือสร้างอินเทอร์แอคทีฟสร้างความสับสนเล็กน้อย ...


1
ขอบคุณฉันสามารถรับการตั้งค่าใหม่ แต่ IDE ยังคงบ่นว่ามันหายไป api_key
รหัส

บิตสับสน ... มันเป็นที่น่ากลัว !!! รุ่งโรจน์สำหรับคำอธิบายที่ชัดเจนของคุณ
Niels

7

คุณสามารถดาวน์โหลดgoogle-services.jsonไฟล์ได้อีกครั้ง

ขั้นตอนในการดาวน์โหลด:

1) คลิกที่เมนูด้านบนในแอพของคุณในFirebaseคอนโซล

2) คลิกที่จัดการ

3) คุณจะพบDownload the latest configตัวเลือกไฟล์ดาวน์โหลดและแทนที่google-services.jsonไฟล์ในแอปพลิเคชันของคุณ


4

ที่หนึ่งในไฟล์ JSON ของคุณ

แทนที่

"api_key": []

กับ

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

การสร้างการไล่ระดับสีจะสำเร็จ แต่เมื่อคุณเรียกใช้แอปพลิเคชันของคุณคุณอาจได้รับข้อผิดพลาดดังนี้

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

ในการแก้ไขปัญหานี้คุณสามารถเพิ่มสิ่งต่อไปนี้ลงในไฟล์ app.gradle .. มันใช้งานได้สำหรับฉัน

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

แก้ไข: มันแสดงให้ฉันเห็นข้อผิดพลาดในภายหลังในขณะที่สร้างไฟล์ apk ดังนั้นฉันต้องดาวน์โหลดไฟล์ json อีกครั้ง หลังจากการทดลอง 2 ครั้งฉันได้ไฟล์ json ด้วยรหัส api ที่ถูกต้อง


3

หากคุณไม่ได้ใช้การเชื่อมโยงที่ถูกต้อง Firebase เพื่อสร้างไฟล์ config google-services.json ที่พบจริงที่นี่


2

งอกใหม่ google-services.json ที่https://developers.google.com/cloud-messaging/android/client#get-config , สิ่งหนึ่งที่สำคัญคือการที่คุณต้องเปิดใช้งานระบบคลาวด์ในการส่งข้อความ "เลือกบริการ" ขั้นตอนที่เปิดใหม่ของ Google -services.json ไฟล์คุณจะเห็นคำที่ชอบ

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

ไม่มีคำนี้หรือไม่มีค่า current_key ไม่ใช่ไฟล์ที่ถูกต้อง


2

ฉันสามารถแก้ปัญหานี้ด้วยขั้นตอนเหล่านี้ที่ไม่ได้รับคำตอบที่นี่ คำตอบนี้ไม่ได้เปิดใช้งาน Cloud Messaging แต่เป็นเพียงการดึงคีย์เซิร์ฟเวอร์

ก่อนอื่นให้ไปที่ Firebase Console จากนั้นไปที่การตั้งค่าโครงการแล้วคลิกที่แท็บ "Cloud Messaging" ดูที่มันบอกว่า "เซิร์ฟเวอร์คีย์" และหากไม่มีคีย์ยาวปรากฏขึ้น (ไม่ใช่หมายเลข "Sender ID") คลิก "Regenerate Key" และตอนนี้คีย์ยาวควรจะปรากฏขึ้น คัดลอกสำคัญที่และวางไว้ในแฟ้ม google-services.json "api_key": [ {"current_key" : "key goes here"} ]ที่:

วิธีนี้ช่วยฉันได้ในขณะที่ไม่มีผู้อื่นทำงานดังนั้นหวังว่านี่จะช่วยคนได้


2

ป้อนคำอธิบายรูปภาพที่นี่

คลิกที่ภาพรวม -> ไอคอนเกียร์ -> การตั้งค่าโครงการ

ป้อนคำอธิบายรูปภาพที่นี่

ไปที่ดาวน์โหลดการกำหนดค่าล่าสุดและคลิกที่ปุ่ม google-service.json เพื่อดาวน์โหลดไฟล์และบันทึกลงในโฟลเดอร์แอพและรวบรวมอีกครั้ง สนุก!


2

คุณต้องเพิ่มลายนิ้วมือใบรับรอง SHA ในโครงการของคุณแล้วดาวน์โหลดไฟล์ google-services.jason อีกครั้งซึ่งควรมี "api_key": [{"current_key": "xxxxxx"}] โดยอัตโนมัติ

คุณสามารถดูหน้าต่อไปนี้เพื่อดูวิธีสร้างลายนิ้วมือ:

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

บน windows เพียงใช้คำสั่งต่อไปนี้และใช้ android เป็นรหัสผ่านเพื่อการตรวจแก้จุดบกพร่อง:

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

1

ใช้ Firebase

GoogleServices'. > Missing api_key/current_key object

ฉันได้รับข้อผิดพลาดนี้หลังจากอัปเดตโครงการที่มีอยู่เป็นบริการ Firebase ใหม่ ไฟล์google-service.json ที่สร้างขึ้นซึ่งดาวน์โหลดจากหน้าการตั้งค่าโปรเจ็กต์ฐานข้อมูล firebaseไม่ได้รวมapi_keyสิ่งที่จำเป็น

จากคำตอบอื่น ๆ ที่นี่ดูเหมือนว่าจะต้องเพิ่มGoogle / Firebase Cloud Messaging (GCM / FCM) เพื่อapi_keyให้รวมไว้ในgoogle-service.jsonไฟล์

ดังนั้นฉันจึงเพิ่มการอ้างอิงบน firebase FCM ก่อนที่จะดาวน์โหลดไฟล์อีกครั้งและครั้งนี้มีการรวมคีย์ไว้ด้วย

รวม FCM (GCM)

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

1

หากคุณไม่ต้องการกำหนดค่าใหม่และดาวน์โหลดgoogle-services.jsonไฟล์คุณสามารถดึงรหัส api ได้โดยตรงจากคอนโซล firebase เพียงไปที่

ภาพรวม> เพิ่มแอปอื่น> เว็บ

apiKeyคุณจะได้รับการกำหนดค่าสำหรับฐานข้อมูลของคุณซึ่งจะมี เพียงคัดลอกค่านั้นและวางไว้ในcurrent_keyค่าที่แสดงโดย XXX ด้านล่าง

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

0

สำหรับผู้ย้ายฐานข้อมูล firebase:

ตรวจสอบให้แน่ใจว่าคุณได้เพิ่มลายนิ้วมืออย่างน้อยหนึ่งลายนิ้วมือในการตั้งค่าโครงการของคุณและดาวน์โหลดไฟล์ google-services.json อีกครั้ง


ขอบคุณคนที่ฉันไปตามคำแนะนำในห้องปฏิบัติการรหัสและไม่ได้เพิ่มคีย์ SHA1 ในตอนแรก ต่อมาฉันต้องเพิ่มเป็น ApiKey ของฉัน - CurrentKey หายไป ไม่แน่ใจว่าเป็นเช่นนั้นหรือไม่ แต่มันแก้ไขปัญหาของฉัน
Rana Ranvijay Singh

0

หากคุณใช้ firebaes คุณต้องคัดลอกเซิร์ฟเวอร์คีย์จาก firebase ไปยัง google-services.json

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

ในการรับรหัสเซิร์ฟเวอร์ไปที่ ProjectOverview> การตั้งค่าโครงการ> CloudMessaging> คัดลอกหรือสร้างและคัดลอกเซิร์ฟเวอร์คีย์ ..


0

เพิ่มลงในไฟล์ google-service.json ของคุณ คุณจะพบมันภายใต้ app / google-service.json

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.