GoogleService không khởi chạy được


113

Tôi đang sử dụng Google Maps trong ứng dụng Android của mình. Tôi đã tạo khóa và thêm các quyền cần thiết trong tệp kê khai. Nhưng ngay sau đó tôi khởi động ứng dụng, tôi nhận được thông báo này trong trình gỡ lỗi:

GoogleService không khởi chạy được, trạng thái: 10, Thiếu tài nguyên mong đợi: 'R.string.google_app_id' để khởi chạy các dịch vụ của Google. Nguyên nhân có thể là thiếu plugin google-services.json hoặc com.google.gms.google-services gradle.

Tôi không chắc chắn điều gì sai. Bản đồ đang hoạt động tốt và tôi có thể sử dụng nó mà không gặp vấn đề gì. Tệp gradle của tôi có mục này:

biên dịch 'com.google.android.gms: play-services: 8.4.0'

Nó phàn nàn về điều gì và làm cách nào để giảm bớt nó?


cái này có trong tệp kê khai của bạn không: <meta-data android: name = "com.google.android.gms.version" android: value = "@ integer / google_play_services_version" />
j2emanue


Tôi đã thử cả hai nhưng vẫn nhận được cùng một thông báo!
Zach

1
Dịch vụ chơi thiết bị của bạn đã được cập nhật apk chưa?
Abhigyan

Không có giải pháp nào trong số này hoạt động nhưng việc cập nhật APK dịch vụ dường như thực hiện được một mẹo nhỏ!
midoriha_senpai

Câu trả lời:


38

Bạn cần đặt tệp cấu hình ( google-services.json) được tạo bởi developer.google.com , như đã đề cập trong bước thứ 2 của tài liệu chính thức tại đây

Quá trình này đơn giản

  1. Bạn có thể chọn dự án của mình hoặc tạo một dự án mới.
  2. Sau đó, sau khi chọn các dịch vụ mong muốn (trong trường hợp này là dịch vụ bản đồ), bạn có thể tạo tệp cấu hình.

    Đối với những người đã di chuyển sang các dự án Firebase, họ có thể nhận được điều tương tự bằng cách đi tới Bảng điều khiển Firebase , chọn dự án của bạn và trong cài đặt, bạn sẽ tìm thấy tệp cấu hình.

  3. Sau đó, như được trích dẫn trong bước 3 của tài liệu chính thức tại đây

    Sao chép google-services.jsontệp bạn vừa tải xuống vào thư mục ứng dụng / hoặc di động / trên Android của bạn

Tái bút: Đối với những người không tán thành câu trả lời này, vui lòng để lại nhận xét tại sao bạn không bình chọn nó.


6
Chúng tôi có thực sự cần điều này trong các ứng dụng của mình với phiên bản mới của Dịch vụ Google Play không? Hay chỉ dành cho đăng nhập Google? Có vẻ kỳ lạ khi nhật ký ném cho tôi lỗi như thể tôi cần nó, nhưng tôi có thể không
RED_

2
@Radix ... Tôi đã truy cập vào liên kết mà bạn đã chia sẻ, nhưng nó yêu cầu tôi đăng ký Google Sign In hoặc Google Cloud Messaging ... không có gì về bản đồ. Bất kỳ ý tưởng? Ngoài ra, việc sao chép tệp json này vào ngay dưới / ứng dụng là một điều khá kỳ quặc ... bạn có thể làm rõ? Cảm ơn nhiều!
Johnny Wu

2
Chúng tôi đã có google-services.json trong ứng dụng của mình, nhưng chúng tôi phải tạo lại nó khi nâng cấp lên 8.4.0.
Roy Solberg

1
cùng một vấn đề, thêm google-services.json đã không giúp đỡ, điều kỳ lạ mà nó không nhìn thấy gcm đã được kích hoạt của tôi và muốn tạo ra mỗi lần chính máy chủ của riêng
Andrew V.

11
Xem trả lời đúng ở đây từ người quản lý sản phẩm tại Google: stackoverflow.com/questions/34365369/...
Ahmed Mounir

52

[Từ Giám đốc sản phẩm @ Google]

Bạn có thể khắc phục sự cố này bằng cách tải xuống và sao chép google-services.jsontệp cho ứng dụng Android của mình bằng cách làm theo các bước bên dưới:

  • Chọn tên ứng dụng / dự án và tên gói Android của bạn từ liên kết này và nhấp vào Continue to Choose and configure services.
  • Bấm vào Continue to Generate Configuration files.
  • Tải xuống google-services.jsonvà sao chép tệp vào thư mục app/hoặc mobile/mô-đun trong dự án Android của bạn.

Nếu trước đây bạn đã nhập dự án Google của mình vào Firebase, bạn có thể tải google-services.json cập nhật từ bảng điều khiển Firebase trong Cài đặt dự án.

KHÔNG SAO CHÉP PROJECT_NUMBER như được đề xuất bởi một trong các câu trả lời khác vì google_app_id đề cập đến ứng dụng của bạn trong một Dự án chứ không phải chính dự án.


1
Đối với những người sử dụng plugin thử nghiệm gradle, google-services.json sẽ không có hiệu lực trực tiếp. Vui lòng tham khảo stackoverflow.com/a/38097895/457137 để biết cách giải quyết khác.
zevoid

Tại sao bắt buộc phải bao gồm tệp json? Tại sao tôi không thể cung cấp id trong thời gian chạy trong mã?
der_michael

Tệp đi vào / app dir, không phải dir cấp cao nhất?
IgorGanapolsky

11

Trong trường hợp của tôi, nguyên nhân của lỗi này là do plugin Dịch vụ của Google cho Gradle và thư viện Dịch vụ Play là các phiên bản không tương thích. Hướng dẫn cho các phiên bản tương thích:

1) Thêm phần phụ thuộc vào build.gradle cấp dự án của bạn:

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

2) Thêm plugin vào build.gradle cấp ứng dụng của bạn:

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

3) Nếu bạn đang sử dụng Android Studio, đây là chuỗi để thêm vào phần phụ thuộc của tệp build.gradle ứng dụng của bạn:

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

Nguồn: https://developers.google.com/cloud-messaging/android/client


1
Cảm ơn, nhưng điều này không hiệu quả với tôi - Android Studio khẳng định rằng tôi cũng đã cài đặt tệp google-services.json, mặc dù tôi nghĩ rằng điều đó không cần thiết nếu bạn làm theo ba bước ở trên để ghi đè lên sự cần thiết của tệp? Dẫn đến việc tôi hỏi: Tại sao tôi cần hệ thống Đăng nhập người dùng của Google nếu tất cả những gì tôi cung cấp là ánh xạ cơ bản?
iaindownie

1
Giải pháp của tôi không được liệt kê, vì vậy tôi đã trả lời câu hỏi để cung cấp cho mọi người một giải pháp tiềm năng khác cho vấn đề này. Trong trường hợp của bạn, bạn có thể đã cài đặt thêm các thư viện. Chỉ thử sử dụngcom.google.android.gms:play-services-maps:8.4.0
13rac1

@eosrei, chỉ sử dụng com.google.android.gms: play-services-maps: 8.4.0 phù hợp với tôi, cảm ơn!
akshay7692

4

Tôi đã gặp vấn đề tương tự và giải quyết nó theo giải pháp chính thức .

Đây là các bước:

  1. lấy tệp cấu hình google-services.jsontừ liên kết này .

  2. Sao chép google-services.jsontệp bạn vừa tải xuống vào thư mục ứng dụng / hoặc di động / của dự án Android Studio của bạn.

  3. Thêm phần phụ thuộc vào build.gradle cấp dự án của bạn:

    classpath 'com.google.gms:google-services:1.5.0-beta2'
  4. Thêm plugin vào build.gradle cấp ứng dụng của bạn:

    apply plugin: 'com.google.gms.google-services'
  5. Thêm phần phụ thuộc này vào build.gradle cấp ứng dụng của bạn:

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

1
Tôi nghĩ tốt hơn nên sử dụng com.google.gms: google-services: 1.5.0 vì nó tốt hơn là phiên bản beta để loại bỏ một số lỗi không thể đoán trước trong ứng dụng của bạn.
Andrew V.

@AndrewV. Vâng tôi đồng ý. Phiên bản "1.5.0-beta2" đã được sao chép từ liên kết tôi đã cung cấp ở trên.
Will

1

Đối với những người gặp phải vấn đề này ngay cả khi đã thiết lập chính xác các dịch vụ chơi và đặt google-services.jsontệp vào project/appthư mục, giải pháp thực tế là

Build > Rebuild Project

Có thể do thực tế là các chuỗi từ tệp json không được tích hợp vào tài nguyên đã biên dịch cho đến khi thực hiện xây dựng lại toàn bộ.


1

Đối với Xamarin / Visual Studio Mac, tôi cần thêm cái này vào cuối Droid.csproj của mình

<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



0

Tôi đã có cùng một vấn đề hồi đó. Có thể giải quyết nó bằng cách chỉ sử dụng thư viện dịch vụ chơi cần thiết, trong trường hợp của tôi là GCM.

Thay vì com.google.android.gms:play-services:8.4.0, tôi sử dụng com.google.android.gms:play-services-gcm:8.4.0. Xem ở đây để biết thêm thông tin; điều này cũng giải quyết vấn đề multidex.

Sau đó, tôi đã áp dụng cả cách tiếp cận của @Radix và @ Alexander để xóa thông báo GCM đã được xuất ra trong logcat liên quan đến google-services.json.


0

Bạn có thể thay đổi versionCodeversionNameứng dụng của mình trong tệp Gradle.


0

Một bản sửa lỗi nhanh mà tôi đã sử dụng là tắt tính năng ký. Nếu không muốn tạo mã sản xuất, bạn có thể đặt biến thể xây dựng của mình thành gỡ lỗi, localOldDebug hoặc localDebug.

Nhấp vào Tạo biến thể ở phía dưới bên trái trong Android Studio.

how-to-vô hiệu hóa-tạo-ký-apk-android-studio


có thể đặt câu hỏi dưới dạng bình luận
jjj

-2

Chỉ cần có một giải pháp khác, tôi vô tình xóa

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

Thêm điều này và công việc, là giải pháp mới

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.