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

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

新規登録して質問してみよう
ただいま回答率
85.48%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

2回答

6259閲覧

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

WeilSpinor

総合スコア170

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

ビルド

ソースコードを単体で実行可能なソフトウェアへ変換する過程をビルド(build)と呼びます

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

0クリップ

投稿2019/03/03 08:21

編集2019/03/06 15:55

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

ビルドしようとしているプロジェクトは、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.

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.

BUILD FAILED in 3s
]

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oikashinoa

2019/03/03 09:59

ソースを載せずに症状だけ書かれても答えにくいですよ。 ソースといま有効にしているプラグイン一覧があると他の人でも再現させるでしょう。そこから回答者は調べることになります。 WeilSpinorさんはエラーをしっかり書いているからかなり良い方ですが、ひどい質問だと以下のように感じることがります。 "体調悪い。病院に行くの面倒くさい、恥ずかしいから電話で治して。あっもちろん無料でね。しんどいから早よして、至急ね。"と言っているようなものが結構あります。 WeilSpinorさんで確認用にmonaca で別プロジェクトを作るときに操作、コピーしたものが、今回追加で必要になるソースとか設定です。慣れてくるとこの準備段階で自分で問題に気づく事が結構あります。またちゃんと再現環境を整えたら回答も早くなります。 もっと情報を出すことをおすすめします。
WeilSpinor

2019/03/03 10:13

ご回答ありがとうございます。 ソースを載せる、ということは、ソースコードを載せること、 ということでしょうか? >確認用にmonaca で別プロジェクトを作るときに操作、コピーしたものが、今回追加で必要になるソースとか設定です いま困っているプロジェクトを複製して、プロパティを確認すると、設定やプラグイン一覧が表示される、ということでしょうか? とりあえず、自分なりに情報をもう少し追記してみようとおもいます。
WeilSpinor

2019/03/03 10:18

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

2019/03/03 10:53

ソースコードを同じエラーを出すのに必要な部分だけに絞って、別プロジェクトを作ってみてください。 自分で問題に気づく事が多々有りますし、ソースをを載せやすくなります。 ありがちなのが、そのままコピペしても動かない状態で削る事が結構あります。 エラー再現に不要な部分を削ってみてください
guest

回答2

0

ベストアンサー

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

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

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

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

投稿2019/03/04 00:38

AlfortMini

総合スコア89

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

WeilSpinor

2019/03/06 10:42

ご回答ありがとうございます。 仰る通りにMonaca Backendのプラグインを無効にしたら、ビルドに成功しました。その後スマホにアプリを入れて起動したら、問題なく動いています。しかし、いくつか謎があります。 ①なぜMonacaBackendプラグインを無効にしたのに、スマホ上でアプリを操作すると、ちゃんと色々なデータ(メモ帳の中身や、登録メールアドレスとパスワード)がちゃんとMonacaBackend上に保存されているのか。(なぜプラグインを切ったのに連動し続けているのか) ②なぜMonacaBackendプラグインが有効になっていることで上記のようなビルドでデバッグエラーが起きたか。 ③なぜ、エラーの内容通りに対応した(google-services.jsonファイルを入手し、あるべきフォルダに格納)のにも関わらず、エラーは治らなかったか。 もしよろしければ、この辺りのことも教えていただけると幸いです。
AlfortMini

2019/03/08 01:07

MonacaBackendプラグインは、プッシュ通知の際に必要になるCordovaプラグインです。 プッシュ通知以外のMonacaバックエンドの機能では使用されません。 そのため、プッシュ通知以外のMonacaバックエンドの機能は、正常に利用できたのだと思います。 MonacaBackendプラグインを有効にした際のエラーは、設定内容に問題があるのだと思います。 設定方法は、下記を確認してみてください。 Android のプッシュ通知設定 https://docs.monaca.io/ja/products_guide/push_notification/gcm/
WeilSpinor

2019/03/09 04:30 編集

つまり、 ・Monacaは、独自のプッシュ通知搭載機能をもっておらず、Googleが提供するプッシュ通知サービス(Firebase Cloud Messaging)を利用している。 ・よって、開発中のアプリにプッシュ通知機能を搭載したければ、利用のための初期設定(google-services.jsonの格納、サーバーキーの取得など)を、GoogleのFirebase console上で済ませなければならない。 ・私がインポートしたアプリ『Backend Memo』は、たまたまプッシュ通知機能を搭載していた。すなわち、デフォルトでプッシュ通知プラグイン(=MonacaBackendプラグイン)がONになっていた。 ・その事情を知らない私は、サービス利用に必要な初期設定をしていない状態でプッシュ通知プラグインのONにしたままビルドしてしまった。 ・だから、ビルドでエラーが出た。 ということなんですね。やっと問題の全体像が見えました。 Backend Memoのサンプルアプリ解説ページで、 「プラグインをOFFにする」か「プッシュ通知初期設定の必要」を説明してほしかったですね。 ご回答ありがとうございました。
WeilSpinor

2019/03/09 04:35 編集

「他社のサービスを使う」「クロスプラットフォーム」「プッシュ通知の仕組み」 といったややこしいことが絡んできたのがいけなかったみたいですね。 他の人に、「Monacaでアプリ開発するのは初心者にはハードルが高すぎるんじゃないか」 といわれたのですが、理由がわかった気がします。
guest

0

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

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

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

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

投稿2019/03/03 12:35

編集2019/03/03 14:06
oikashinoa

総合スコア2826

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

WeilSpinor

2019/03/06 10:45

ご回答ありがとうございます。 上の方のおっしゃる通りにやったら、なぜだか分かりませんがビルドに成功しました。 エラーメッセージに従って、 google-services.jsonを入手してあるべき場所に入れる、という作業をしたのですが、にもかかわらず、エラーが治らなかったという謎が残ったのが歯がゆいですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問