Tôi đã điều tra một chút về plugin google-services và json và tìm thấy các nguồn của plugin này.
Điều đầu tiên trước tiên
Google-services gradle-plugin được tham chiếu bởi classpath và khi áp dụng chỉ là một plugin dành cho thời gian xây dựng! Vì vậy, nó chỉ ảnh hưởng đến quá trình xây dựng ứng dụng của bạn, chứ không ảnh hưởng đến quá trình thời gian chạy!
Plugin này chỉ có nghĩa là một người trợ giúp bắt đầu nhanh chóng để tích hợp các dịch vụ của Google một cách nhanh chóng trong ứng dụng của bạn. Rõ ràng, quá trình này hơi phức tạp và không được ghi lại bằng tài liệu, vì vậy Google lẽ ra phải làm rõ quá trình này làm gì.
Trên thực tế, tôi đã tìm thấy mã nguồn cho phiên bản plugin com.google.gms: google-services: 1.4.0-beta3 và không tìm thấy bất kỳ tài liệu tham khảo cụ thể nào trong đó về appinvites cũng như tôi không tìm thấy bất kỳ API Google nào cho Lời mời ứng dụng! (Nhưng có thể nó chỉ sử dụng một dự án API chung với id dự án của nó, tôi đã không thử điều này)
Những gì nó làm
Google-services gradle-plugin tìm kiếm tệp google-services.json được đề cập trong mô-đun ứng dụng của bạn. Sau đó, nó tìm kiếm các cài đặt đã định cấu hình như id dự án và id theo dõi, v.v., được tạo bởi bảng điều khiển dành cho nhà phát triển API của Google vào tệp google-services.json. Từ cài đặt mà nó tìm thấy, các giá trị tài nguyên Android được tạo thành đường dẫn sau:
$project.buildDir/generated/res/google-services/$variant.dirName/values/values.xml
Ví dụ về bản dựng gỡ lỗi của ứng dụng của bạn:
app/build/generated/res/google-services/debug/values/values.xml
Ví dụ: nếu bạn đã làm theo hướng dẫn GCM, tệp JSON sẽ bao gồm id của dự án API dưới dạng tài nguyên android sau:
<string name="gcm_defaultSenderId">project-id</string>
Vì vậy, plugin và tệp JSON này không cần thiết để chạy hoặc xuất bản ứng dụng của bạn, nó chỉ là trình trợ giúp khởi động nhanh để tạo một số tệp tài nguyên android cơ bản để tích hợp dễ dàng hơn các tính năng API cụ thể của Google.
Lưu ý trong mã nguồn được tham chiếu bên dưới rằng plugin google-services luôn tạo các tài nguyên android đó cho mọi biến thể ứng dụng được xác định trong app / build.gradle của bạn.
Nếu không muốn điều đó, bạn nên sử dụng các tài nguyên đã tạo đó trong các biến thể ứng dụng bạn muốn và xóa các tài nguyên khác. Đừng quên xóa plugin google-services áp dụng khỏi app / build.gradle, nếu không nó sẽ được tạo lại cho tất cả các biến thể ứng dụng.
Những gì nó không
Plugin và tệp JSON này KHÔNG ảnh hưởng trực tiếp đến hoạt động bên trong của các tính năng Google nói trên cho ứng dụng của bạn! Nếu bạn đã làm theo các hướng dẫn cũ hơn trên developer.android.com về cách tích hợp, ví dụ như GCM hoặc Google Analytics, thì bạn thậm chí không cần phải tích hợp Google-services gradle hoặc tệp google-services.json!
Lưu ý về nơi tôi tìm thấy các nguồn
Sau khi bạn tích hợp google-services gradle-plugin và khi đồng bộ hóa dự án của mình, Gradle sẽ tự động tải phần phụ thuộc google-services xuống một đường dẫn tương tự như thế này (trên Windows, bạn có thể cần phải xem trang chủ của mình / .gradle dành cho 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
Nếu bạn giải nén tệp jar này, bạn sẽ tìm thấy hai tệp:
GoogleServicesPlugin.groovy
GoogleServicesTask.java
chứa mã nguồn đơn giản của plugin gradle.
GoogleServicesPlugin.groovy
chứa việc xử lý các biến thể ứng dụng và các định nghĩa cơ bản về đường dẫn, v.v.
GoogleServicesTask.java
chứa định nghĩa nhiệm vụ thực tế, hãy tìm phương pháp sau để xem nó thực sự hoạt động gì:
@TaskAction
public void action() throws IOException {