ฉันตรวจสอบเล็กน้อยเกี่ยวกับปลั๊กอิน Google-services และ json และพบแหล่งที่มาของปลั๊กอินนี้
สิ่งแรกก่อน
gradle-plugin google-services ที่อ้างอิงโดย classpath และใช้เป็นปลั๊กอิน build-time เท่านั้น! ดังนั้นจึงมีผลต่อกระบวนการสร้างของแอปของคุณเท่านั้น แต่ไม่ใช่กระบวนการรันไทม์!
ปลั๊กอินนี้มีไว้เป็นเพียงตัวช่วยในการเริ่มต้นอย่างรวดเร็วในการผสานรวมบริการของ Google ในแอปของคุณอย่างรวดเร็ว เห็นได้ชัดว่ากระบวนการนี้ค่อนข้างซับซ้อนและไม่ได้รับการจัดทำเป็นเอกสารดังนั้น Google ควรระบุให้ชัดเจนว่ากระบวนการนี้ทำอย่างไร
อันที่จริงฉันพบซอร์สโค้ดสำหรับปลั๊กอินเวอร์ชัน com.google.gms: google-services: 1.4.0-beta3 และไม่พบข้อมูลอ้างอิงใด ๆ เกี่ยวกับแอปเชิญและไม่พบ Google API สำหรับ App Invites! (แต่บางทีมันอาจจะใช้โปรเจ็กต์ API ทั่วไปที่มีรหัสโปรเจ็กต์ฉันไม่ได้ลอง)
มันทำอะไร
Google-services gradle-plugin จะค้นหาไฟล์ google-services.json ที่กล่าวถึงในโมดูลแอปของคุณ จากนั้นจะค้นหาการตั้งค่าที่กำหนดค่าไว้เช่น project-id และ tracking-id เป็นต้นซึ่งสร้างโดยคอนโซลนักพัฒนา Google API ลงในไฟล์ google-services.json จากการตั้งค่าที่พบค่าทรัพยากร Android จะถูกสร้างขึ้นในเส้นทางต่อไปนี้:
$project.buildDir/generated/res/google-services/$variant.dirName/values/values.xml
ตัวอย่างเช่นการสร้างดีบักของแอปของคุณ:
app/build/generated/res/google-services/debug/values/values.xml
เช่นถ้าคุณทำตามบทช่วยสอน GCM ไฟล์ JSON จะรวม id ของโครงการ API เป็นทรัพยากร android ต่อไปนี้:
<string name="gcm_defaultSenderId">project-id</string>
ดังนั้นปลั๊กอินและไฟล์ JSON นี้จึงไม่จำเป็นต่อการเรียกใช้หรือเผยแพร่แอปของคุณมันเป็นเพียงผู้ช่วยในการเริ่มต้นอย่างรวดเร็วในการสร้างไฟล์ทรัพยากรพื้นฐานของ Android เพื่อการรวมคุณลักษณะ Google API เฉพาะที่ง่ายขึ้น
โปรดสังเกตในซอร์สโค้ดที่อ้างอิงด้านล่างว่าปลั๊กอินบริการของ Google จะสร้างทรัพยากร Android เหล่านั้นสำหรับทุกตัวแปรของแอปที่กำหนดไว้ใน app / build.gradle ของคุณ
หากคุณไม่ต้องการสิ่งนั้นคุณควรใช้ทรัพยากรที่สร้างขึ้นเหล่านั้นในรูปแบบแอพที่คุณต้องการและลบอื่น ๆ อย่าลืมลบปลั๊กอิน google-services ที่ใช้ออกจาก app / build.gradle มิฉะนั้นจะถูกสร้างใหม่สำหรับแอพทุกรุ่น
สิ่งที่ไม่
ปลั๊กอินและไฟล์ JSON นี้ไม่ได้ส่งผลโดยตรงต่อการทำงานภายในของคุณสมบัติ Google ดังกล่าวสำหรับแอปของคุณ! หากคุณได้ทำตามบทช่วยสอนที่เก่ากว่าใน developer.android.com เกี่ยวกับวิธีการผสานรวมเช่น GCM หรือ Google Analytics แล้วคุณไม่จำเป็นต้องรวม Google-services gradle-plugin หรือไฟล์ google-services.json ด้วยซ้ำ!
แจ้งให้ทราบว่าฉันพบแหล่งที่มาที่ใด
หลังจากที่คุณรวม Google-services gradle-plugin และเมื่อซิงค์โปรเจ็กต์ของคุณ Gradle จะดาวน์โหลดการพึ่งพาบริการของ Google ไปยังเส้นทางที่คล้ายกันโดยอัตโนมัติ (บน Windows คุณอาจต้องดูที่บ้าน / .gradle สำหรับ Linux):
C:\Users\user\.gradle\caches\modules-2\files-2.1\com.google.gms\google-services\1.4.0-beta3\f1580f62e3be313eba041ce19b64fd3f44cf8951\google-services-1.4.0-beta3-sources.jar
หากคุณแตกไฟล์ jar นี้คุณจะพบสองไฟล์:
GoogleServicesPlugin.groovy
GoogleServicesTask.java
ซึ่งมีซอร์สโค้ดธรรมดาของปลั๊กอิน gradle
GoogleServicesPlugin.groovy
ประกอบด้วยการจัดการตัวแปรของแอปและคำจำกัดความพื้นฐานของเส้นทางเป็นต้น
GoogleServicesTask.java
มีข้อกำหนดงานจริงให้มองหาวิธีการต่อไปนี้เพื่อดูว่ามันทำอะไรได้บ้าง:
@TaskAction
public void action() throws IOException {