質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.10%

MonacaでAndroidアプリのビルドを実行するとエラーが出ます。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 844

WeilSpinor

score -40

【使用プラグイン】
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
]

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • oikashinoa

    2019/03/03 18:59

    ソースを載せずに症状だけ書かれても答えにくいですよ。
    ソースといま有効にしているプラグイン一覧があると他の人でも再現させるでしょう。そこから回答者は調べることになります。

    WeilSpinorさんはエラーをしっかり書いているからかなり良い方ですが、ひどい質問だと以下のように感じることがります。


    "体調悪い。病院に行くの面倒くさい、恥ずかしいから電話で治して。あっもちろん無料でね。しんどいから早よして、至急ね。"と言っているようなものが結構あります。

    WeilSpinorさんで確認用にmonaca で別プロジェクトを作るときに操作、コピーしたものが、今回追加で必要になるソースとか設定です。慣れてくるとこの準備段階で自分で問題に気づく事が結構あります。またちゃんと再現環境を整えたら回答も早くなります。

    もっと情報を出すことをおすすめします。

    キャンセル

  • WeilSpinor

    2019/03/03 19:13

    ご回答ありがとうございます。
    ソースを載せる、ということは、ソースコードを載せること、
    ということでしょうか?

    >確認用にmonaca で別プロジェクトを作るときに操作、コピーしたものが、今回追加で必要になるソースとか設定です

    いま困っているプロジェクトを複製して、プロパティを確認すると、設定やプラグイン一覧が表示される、ということでしょうか?



    とりあえず、自分なりに情報をもう少し追記してみようとおもいます。

    キャンセル

  • WeilSpinor

    2019/03/03 19:18

    たぶん、プログラムのソースコードのエラーではなく、必要なファイルがない、というエラーだと思うのですが、それでもソースコードを載せたほうが良いのでしょうか?
    あと、プログラムのソースコードは複数あって、全部載せると長大になってしまうのですが、わかりやすく載せることは可能でしょうか?(質問が多くてすみません)

    キャンセル

  • oikashinoa

    2019/03/03 19:53

    ソースコードを同じエラーを出すのに必要な部分だけに絞って、別プロジェクトを作ってみてください。
    自分で問題に気づく事が多々有りますし、ソースをを載せやすくなります。

    ありがちなのが、そのままコピペしても動かない状態で削る事が結構あります。

    エラー再現に不要な部分を削ってみてください

    キャンセル

回答 2

checkベストアンサー

+1

Monacaバックエンドとプロジェクトの紐付けを行うと、プッシュ通知用のMonacaBackendプラグインもプロジェクトに追加されるので、今回のビルドエラーになっていると思います。

プッシュ通知を行わない場合は、

設定 > Cordovaプラグインの管理

からMonacaBackendプラグインを無効にすればビルドが成功すると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/03/06 19:42

    ご回答ありがとうございます。

    仰る通りにMonaca Backendのプラグインを無効にしたら、ビルドに成功しました。その後スマホにアプリを入れて起動したら、問題なく動いています。しかし、いくつか謎があります。

    ①なぜMonacaBackendプラグインを無効にしたのに、スマホ上でアプリを操作すると、ちゃんと色々なデータ(メモ帳の中身や、登録メールアドレスとパスワード)がちゃんとMonacaBackend上に保存されているのか。(なぜプラグインを切ったのに連動し続けているのか)

    ②なぜMonacaBackendプラグインが有効になっていることで上記のようなビルドでデバッグエラーが起きたか。

    ③なぜ、エラーの内容通りに対応した(google-services.jsonファイルを入手し、あるべきフォルダに格納)のにも関わらず、エラーは治らなかったか。

    もしよろしければ、この辺りのことも教えていただけると幸いです。

    キャンセル

  • 2019/03/08 10:07

    MonacaBackendプラグインは、プッシュ通知の際に必要になるCordovaプラグインです。
    プッシュ通知以外のMonacaバックエンドの機能では使用されません。

    そのため、プッシュ通知以外のMonacaバックエンドの機能は、正常に利用できたのだと思います。

    MonacaBackendプラグインを有効にした際のエラーは、設定内容に問題があるのだと思います。
    設定方法は、下記を確認してみてください。

    Android のプッシュ通知設定
    https://docs.monaca.io/ja/products_guide/push_notification/gcm/

    キャンセル

  • 2019/03/09 13:29 編集

    つまり、
    ・Monacaは、独自のプッシュ通知搭載機能をもっておらず、Googleが提供するプッシュ通知サービス(Firebase Cloud Messaging)を利用している。

    ・よって、開発中のアプリにプッシュ通知機能を搭載したければ、利用のための初期設定(google-services.jsonの格納、サーバーキーの取得など)を、GoogleのFirebase console上で済ませなければならない。

    ・私がインポートしたアプリ『Backend Memo』は、たまたまプッシュ通知機能を搭載していた。すなわち、デフォルトでプッシュ通知プラグイン(=MonacaBackendプラグイン)がONになっていた。

    ・その事情を知らない私は、サービス利用に必要な初期設定をしていない状態でプッシュ通知プラグインのONにしたままビルドしてしまった。

    ・だから、ビルドでエラーが出た。

    ということなんですね。やっと問題の全体像が見えました。

    Backend Memoのサンプルアプリ解説ページで、
    「プラグインをOFFにする」か「プッシュ通知初期設定の必要」を説明してほしかったですね。

    ご回答ありがとうございました。

    キャンセル

  • 2019/03/09 13:35 編集

    「他社のサービスを使う」「クロスプラットフォーム」「プッシュ通知の仕組み」
    といったややこしいことが絡んできたのがいけなかったみたいですね。

    他の人に、「Monacaでアプリ開発するのは初心者にはハードルが高すぎるんじゃないか」
    といわれたのですが、理由がわかった気がします。

    キャンセル

0

取り急ぎ、該当しそうなものを。

google-services.jsonを追加するならいかが参考になるかと。
https://teratail.com/questions/175442

ただし、原因を取り除いてないので根本的に直らないと思います。

参考にしたbackendmemoで新たにプロジェクトを作ってみてください。エラー出ませんよね?
追加、変更した部分を洗い出したほうが良いです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/03/06 19:45

    ご回答ありがとうございます。
    上の方のおっしゃる通りにやったら、なぜだか分かりませんがビルドに成功しました。

    エラーメッセージに従って、
    google-services.jsonを入手してあるべき場所に入れる、という作業をしたのですが、にもかかわらず、エラーが治らなかったという謎が残ったのが歯がゆいですね。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.10%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる