質問: 【使用プラグイン】 Cordova 7.1、JQuery mobile 【本文】 MonacaIDE上で制作中のプロジェクトに対し、アンドロイド用のビルドを実行すると、以下のようなエラーメッセージが出て、ビルドに失敗してしまいます。(一部抜粋。エラー全文は文末に記載します) * What went wrong: Execution failed for task ':processDebugGoogleServices'. > > File google-services.json is missing. The Google Services Plugin cannot function without it. > > Searched Location: > > /private/tmp/monaca/5c7b7f82e78885e863b88428/project/platforms/android/src/debug/google-services.json > > /private/tmp/monaca/5c7b7f82e78885e863b88428/project/platforms/android/google-services.json > > > * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. * Get more help at https://help.gradle.org ビルドしようとしているプロジェクトは、Monacaサイトで公開されているサンプルアプリ「バックエンドメモ」(https://docs.monaca.io/ja/sampleapp/samples/backend_memo/) をそのままインポート(コピー)したもので、MonacaIDEの使い方の流れを知るために、試しに適当なアプリのソースファイルを引っ張ってきて、ビルドしてAndroid端末に入れるところまでやってみよう、と思ってやっています。 Monacaサイトのトラブルシューティングの典型例を見ましたが、以上のエラーに関しては何も載っていませんでした。そもそもMonacaでのアプリ開発における事前準備段階で飛ばしてしまった手順があったのかと思いチュートリアルを見直しましたが、一応手順通りにはやっているようでした。 エラーメッセージ「File google-services.json is missing. The Google Services Plugin cannot function without it. 」で検索を掛けたところ、1、2件ほど英語の質問サイトの記事(https://community.onsen.io/topic/3339/file-google-services-json-is-missing/2) が出てきて、 「たぶん、Firebase設定ファイルが必要なので、どこかで探して、プロジェクトのルートに入れなければならない」 という回答がありました。 しかし、それはMonacaを使っているケースではないし、そもそもgoogle-serviceや、json、Firebaseというのが一体何なのかよくわからず、どう対処していいのかわかりません。 Googleのサイト(https://developers.google.com/android/guides/google-services-plugin)によると、とりあえず、 「Google-serviceというファイル(?)を、あなたが制作中のアプリのbuild.gradleというフォルダ(?)に入れなければならない」 と書いてありました。これは、このサンプルアプリ「バックエンド メモ」が、必要なファイルである「google-services.json」が欠損したまま公開されていた、ということでしょうか? ご回答宜しくお願い致します。 【追記】 とりあえずgoogle-services.jsonというものをダウンロードしようと思ったのですが、どうもFirebaseというサイトに登録しないとダウンロードできないようで、いま試しています。 【追記】 エラーメッセージを見直したところ、 「project/platforms/android/src/debug/google-services.jsonという場所を探したが、google-services.jsonが見当たらない」 とのことでした。しかし、platformsから下のディレクトリが存在しなかったので、とりあえず以下の三つのディレクトリandroid/src/debug/を手動で作成してみました。 とりあえず、google-services.jsonのダウンロードに成功したら、ここに入れてみようと思います。 【追記】 どうやらFirebaseというのは、googleが提供するAndroidアプリ開発のIDEであり、 google-services.jsonというのは、Androidの開発において、googleの提供する便利なツールを利用するのに必要なファイルであるということがわかりました。 そして、google-services.jsonというファイルのダウンロード方法を調べると、このFirebase上で実行中のプロジェクトに直接埋め込む形のダウンロード方法しか出てきません。 しかし、いまやりたいのは、 「google-services.jsonファイルを、Monaca上で実行しているプロジェクトのフォルダに入れる」 ことなので、とにかくgoogle-services.jsonというファイルをそのままダウンロードすることができないのか、調べています。 【追記】 Firebaseのプロジェクト画面から、google-services.jsonをダウンロードし、Monacaのプロジェクトファイルの以下のディレクトリ、project/platforms/android/ に入れて再度デバッグビルドを実行しました。 しかし、結果は、全く同じエラーを吐き出して終わりました。 何がいけないのでしょうか? 【追記】 回答者様の仰る通りにMonaca Backendのプラグインを無効にしたら、ビルドに成功しました。その後スマホにアプリを入れて起動したら、問題なく動いています。しかし、いくつか謎があります。 1なぜMonacaBackendプラグインを無効にしたのに、スマホ上でアプリを操作すると、ちゃんと色々なデータ(メモ帳の中身や、登録メールアドレスとパスワード)がちゃんとMonacaBackend上に保存されているのか。(なぜプラグインを切ったのに連動し続けているのか) 2なぜMonacaBackendプラグインが有効になっていることで上記のようなビルドでデバッグエラーが起きたか。 3なぜ、エラーの内容通りに対応した(google-services.jsonファイルを入手し、あるべきフォルダに格納)のにも関わらず、エラーは治らなかったか。 もしよろしければ、この辺りのことも教えていただけると幸いです。 ### エラー全文 Fetching Build Queue Data... -> Fetched data for queue ID 5c7b7f82e78885e863b88428 Preparing Build Environment... Creating Project Build Workspace... Fetching Project Content... Downloading Project Archive... Extracting Project Archive... Fetching Project Info... Initializing Builder Service -> Cordova framework has been detected. Search builder by config Webview:null Arch:null Starting Build cordova version: 7.1.0 * preBuild - * Cordova create - $ /data/build-server/cordova/7.1.0/bin/cordova create /private/tmp/monaca/5c7b7f82e78885e863b88428/project Creating a new cordova project. * Copy res directory - * Copy resources directory - * Copy config.xml - * Copy package.json - * Copy external plugin setting files - * Copy www files - * Do npm install - $ npm install --production * Cordova platform add - $ /data/build-server/cordova/7.1.0/bin/cordova platform add /data/build-server/cordova/platforms/android/6.4.0 --nofetch Adding android project... Creating Cordova project for the Android platform: Path: platforms/android Package: io.monaca.backend Name: Backend_Memo Activity: MainActivity Android target: android-26 Subproject Path: CordovaLib Android project created with cordova-android@6.4.0 Discovered plugin "cordova-plugin-whitelist" in config.xml. Adding it to the project Fetching plugin "cordova-plugin-whitelist@1.3.3" via npm Installing "cordova-plugin-whitelist" for android This plugin is only applicable for versions of cordova-android greater than 4.0. If you have a previous platform version, you do *not* need this plugin since the whitelist will be built in. Adding cordova-plugin-whitelist to package.json Saved plugin info for "cordova-plugin-whitelist" to config.xml Discovered plugin "cordova-plugin-splashscreen" in config.xml. Adding it to the project Fetching plugin "cordova-plugin-splashscreen@5.0.1" via npm Installing "cordova-plugin-splashscreen" for android Adding cordova-plugin-splashscreen to package.json Saved plugin info for "cordova-plugin-splashscreen" to config.xml Discovered plugin "cordova-custom-config" in config.xml. Adding it to the project Fetching plugin "cordova-custom-config@5.0.2" via npm Installing "cordova-custom-config" for android Adding cordova-custom-config to package.json Saved plugin info for "cordova-custom-config" to config.xml Discovered plugin "monaca-plugin-monaca-core" in config.xml. Adding it to the project Fetching plugin "monaca-plugin-monaca-core@3.2.1" via npm Installing "monaca-plugin-monaca-core" for android Adding monaca-plugin-monaca-core to package.json Saved plugin info for "monaca-plugin-monaca-core" to config.xml Discovered plugin "monaca-plugin-backend" in config.xml. Adding it to the project Fetching plugin "monaca-plugin-backend@2.0.2" via npm Installing "monaca-plugin-backend" for android Fetching plugin "phonegap-plugin-push@2.1.3" via npm Installing "phonegap-plugin-push" for android Subproject Path: CordovaLib Adding monaca-plugin-backend to package.json Saved plugin info for "monaca-plugin-backend" to config.xml --save flag or autosave detected Saving android@/data/build-server/cordova/platforms/android/6.4.0 into config.xml file ... * Cordova prepare - $ /data/build-server/cordova/7.1.0/bin/cordova prepare android cordova-custom-config: Skipping auto-restore of config file backup(s) * Cordova prepare - $ /data/build-server/cordova/7.1.0/bin/cordova prepare android cordova-custom-config: Skipping auto-restore of config file backup(s) * Cordova compile - $ /data/build-server/cordova/7.1.0/bin/cordova compile --debug --device cordova-custom-config: Loaded module dependencies cordova-custom-config: Running applyCustomConfig.js DEBUG: Aborting applyCustomConfig.js because current hook 'before_compile' is not configured hook 'after_prepare' cordova-custom-config: Finished applying platform config ANDROID_HOME=/data/android-sdk JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home :wrapper BUILD SUCCESSFUL in 1s 1 actionable task: 1 executed Subproject Path: CordovaLib Download https://jcenter.bintray.com/com/android/tools/build/gradle/maven-metadata.xml The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead. at build_6nn7ii7rp8fqcdj9ea7ttns2g.run(/private/tmp/monaca/5c7b7f82e78885e863b88428/project/platforms/android/build.gradle:142) Configuration 'compile' in project ':' is deprecated. Use 'implementation' instead. registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection) registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection) publishNonDefault is deprecated and has no effect anymore. All variants are now published. :preBuild UP-TO-DATE :CordovaLib:preBuild UP-TO-DATE :CordovaLib:preDebugBuild UP-TO-DATE :CordovaLib:checkDebugManifest :CordovaLib:processDebugManifest :preDebugBuild :CordovaLib:compileDebugAidl :compileDebugAidl :CordovaLib:packageDebugRenderscript NO-SOURCE :compileDebugRenderscript :checkDebugManifest :generateDebugBuildConfig :prepareLintJar :generateDebugResValues :generateDebugResources :processDebugGoogleServices FAILED 11 actionable tasks: 11 executed * postBuild - Build Error: Error: Sandbox Exec Error: [ FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':processDebugGoogleServices'. > > File google-services.json is missing. The Google Services Plugin cannot function without it. > > Searched Location: > > /private/tmp/monaca/5c7b7f82e78885e863b88428/project/platforms/android/src/debug/google-services.json > > /private/tmp/monaca/5c7b7f82e78885e863b88428/project/platforms/android/google-services.json > > > * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. * Get more help at https://help.gradle.org BUILD FAILED in 3s Error: /private/tmp/monaca/5c7b7f82e78885e863b88428/project/platforms/android/gradlew: Command failed with exit code 1 Error output: FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':processDebugGoogleServices'. > > File google-services.json is missing. The Google Services Plugin cannot function without it. > > Searched Location: > > /private/tmp/monaca/5c7b7f82e78885e863b88428/project/platforms/android/src/debug/google-services.json > > /private/tmp/monaca/5c7b7f82e78885e863b88428/project/platforms/android/google-services.json > > > * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. * Get more help at https://help.gradle.org BUILD FAILED in 3s ]
回答: 取り急ぎ、該当しそうなものを。 google-services.jsonを追加するならいかが参考になるかと。 ただし、原因を取り除いてないので根本的に直らないと思います。 参考にしたbackendmemoで新たにプロジェクトを作ってみてください。エラー出ませんよね? 追加、変更した部分を洗い出したほうが良いです。