私は自分のAndroidアプリケーションでGoogleマップを使用しています。キーを作成し、マニフェストファイルに必要な権限を追加しました。しかしすぐに私は私がデバッガでこのメッセージを受け取るアプリケーションを起動します。
GoogleServiceの初期化に失敗しました、状態:10、Googleサービスの初期化に必要なリソース: 'R.string.google_app_id'がありません。考えられる原因は、google-services.jsonまたはcom.google.gms.google-services gradle pluginがないことです。
私は何が悪いのかわからない。マップはうまく機能しているので、問題なく使用できます。私のgradleファイルには、次のエントリがあります。
「com.google.Android.gms:play-services:8.4.0」をコンパイルします。
それは何について不平を言っていますか、そしてどのようにそれを軽減しますか?
公式ドキュメントの第2ステップに記載されているように、 developer.google.com によって生成された設定ファイル(google-services.json
)を配置する必要があります こちら
プロセスは簡単です
次に、必要なサービス(この場合はmapsサービス)を選択した後に、構成ファイルを生成することができます。
Firebaseプロジェクトに移行したことがある人は、 Firebaseコンソール に移動してプロジェクトを選択し、設定の下に設定ファイルがあります。 。
それから公式文書のステップ3で引用されているように ここで
ダウンロードした
google-services.json
ファイルをAndroidのapp /またはmobile /ディレクトリにコピーします。
P:この回答を投票している人のために、なぜあなたが投票したのかについてコメントを残してください。
[Product Manager @ Googleより]
次の手順に従って、Androidアプリのgoogle-services.json
ファイルをダウンロードしてコピーすることで、この問題を解決できます。
Continue to Choose and configure services
をクリックします。Continue to Generate Configuration files
をクリックしてください。google-services.json
をダウンロードし、そのファイルをAndroidプロジェクトのapp/
またはmobile/
モジュールディレクトリにコピーします。以前にGoogleプロジェクトをFirebaseにインポートしたことがある場合は、プロジェクト設定の Firebaseコンソール から更新されたgoogle-services.jsonを取得できます。
google_app_idはプロジェクト自体ではなく、プロジェクト内のアプリを参照するため、他の回答の1つで提案されているPROJECT_NUMBERをコピーしないでください。
私の場合、このエラーの原因は、Gradle用GoogleサービスプラグインとPlayサービスライブラリが互換性のないバージョンだったことです。互換性のあるバージョンのための指示:
1)プロジェクトレベルのbuild.gradleに依存関係を追加します。
classpath 'com.google.gms:google-services:1.5.0-beta2'
2)アプリレベルのbuild.gradleにプラグインを追加します。
apply plugin: 'com.google.gms.google-services'
3)Android Studioを使用している場合、これはアプリケーションのbuild.gradleファイルの依存関係セクションに追加する文字列です。
dependencies {
compile "com.google.Android.gms:play-services:8.3.0"
}
出典: https://developers.google.com/cloud-messaging/Android/client
私は同じ問題に遭遇し、それが 公式解 に従って解決しました。
手順は次のとおりです。
このリンクから設定ファイルgoogle-services.json
を取得してください。
ダウンロードしたgoogle-services.json
ファイルを、Android Studioプロジェクトのapp /またはmobile /ディレクトリにコピーします。
プロジェクトレベルのbuild.gradleに依存関係を追加します。
classpath 'com.google.gms:google-services:1.5.0-beta2'
アプリレベルのbuild.gradleにプラグインを追加します。
apply plugin: 'com.google.gms.google-services'
この依存関係をアプリレベルのbuild.gradleに追加します。
dependencies {
compile "com.google.Android.gms:play-services:8.3.0"
}
Xamarin/Visual Studio Macの場合、これをDroid.csprojの一番下に追加する必要がありました。
<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
これは私にも起こります。私の場合は、Androidスタジオが私の主な活動にコードを挿入しようとしたためです。コードを削除するとエラーが修正されます
挿入されたコードはアプリのインデックス作成に関するものです。
Playサービスを正しくセットアップしてgoogle-services.json
ファイルをproject/app
フォルダーに配置した後でも、この問題に直面する人のための実際の解決策は、
Build > Rebuild Project
おそらくjsonファイルからの文字列は、完全な再構築が実行されるまでコンパイルされたリソースに統合されないという事実によります。
Aクイックフィックス私が使用したのは署名を無効にすることです。プロダクションコードを作成したくない場合は、ビルドバリアントをdebug、localOldDebugまたはlocalDebugに設定できます。
Android Studioの左下にある[Build Variants]をクリックします。
Gradleファイルで、アプリのversionCode
とversionName
を変更できます。
当時も同じ問題がありました。私の場合はGCMである、必要なプレイサービスライブラリのみを使用することによってそれを解決することができました。
com.google.Android.gms:play-services:8.4.0
の代わりに、com.google.Android.gms:play-services-gcm:8.4.0
を使います。詳しくは こちら をご覧ください。これもマルチデックス問題を解決します。
次に、google-services.json
に関して、GCMがlogcatに出力されたというメッセージを削除するために、@ Radixと@ Alexanderの両方のアプローチを適用しました。