はじめに
OS: Windows 7
cordova-android: 7.1.2
cordova-plugin-fcm: 2.1.2
cordovaを使ったハイブリッドアプリでプッシュ通知を実装しようとしてcordova-plugin-fcmをインストール(cordova plugin add cordova-plugin-fcm
)したところ、インストールはうまくいったのですが、実行(cordova run android
)時に以下のエラーが出ました。
$ cordova run android
Android Studio project detected
Invalid data, chunk must be a string or buffer, not object
原因と解決策はググるとすぐ出ましたが英語しかなかったので一応日本語情報としてメモしておきます。
参考:https://github.com/fechanique/cordova-plugin-fcm/issues/481
原因
cordova-androidのバージョンが7以上だと発生するみたいです。
解決策①
cordova-androidのバージョンを落とす
cordova platform rm android
cordova platform add android@6.4.0
解決策②
cordova-plugin-fcmプラグインのソースを修正する。
対象ソース:plugins/cordova-plugin-fcm/scripts/fcm_config_files_process.js
修正①
前:var strings = fs.readFileSync("platforms/android/res/values/strings.xml").toString();
後:var strings = fs.readFileSync("platforms/android/app/src/main/res/values/strings.xml").toString();
修正②
前:fs.writeFileSync("platforms/android/res/values/strings.xml", strings);
後:fs.writeFileSync("platforms/android/app/src/main/res/values/strings.xml", strings);
次にgoogle-services.json
を以下の2つのフォルダに設置
1. platforms/android/google-services.json
2. platforms/android/app/google-services.json
おわりに
解決策①も②もどちらもうまくいきましたが、ソース修正は影響範囲が不明でちょっと怖いので自分は解決策①にしました。
まあただのパスの修正なので解決策①でも問題ないと思います。
それではよきエンジニアライフを~