【使用プラグイン】
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のプラグインを無効にしたら、ビルドに成功しました。その後スマホにアプリを入れて起動したら、問題なく動いています。しかし、いくつか謎があります。
①なぜMonacaBackendプラグインを無効にしたのに、スマホ上でアプリを操作すると、ちゃんと色々なデータ(メモ帳の中身や、登録メールアドレスとパスワード)がちゃんとMonacaBackend上に保存されているのか。(なぜプラグインを切ったのに連動し続けているのか)
②なぜMonacaBackendプラグインが有効になっていることで上記のようなビルドでデバッグエラーが起きたか。
③なぜ、エラーの内容通りに対応した(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
]

回答2件
あなたの回答
tips
プレビュー