きまぐれweb/app開発日記

個人でWEBやアプリの開発してます。使用している言語・フレームワークはGo,Flutter,Rails,Vue,ionicです。これらの開発で発見したこと、思ったことを気まぐれに書いていきます。

ionicでFirebase関連のビルドエラーが多発!

ionicでは通知の処理などでFirebaseを使うことが多いのですが、4月頃からFirebaseがアップデートを繰り返しており、それによってビルドエラーが多発しています。

僕もアプリをアップデートしようとした所、Firebaseのエラーでどっぷりハマってしまい時間を浪費してしまいました。

同じような人がいると思いますので、自分なりの解決策を紹介します。

プラグインはcordova-plugin-firebase-libを使用

今までは"cordova-plugin-firebase"や"cordova-plugin-fcm"といったプラグインが使われてきましたが、これらは対応する更新がされていません。

そこで有志の方が作ったのがこちらのプラグインです。

cordova-plugin-firebase-lib github.com

このプラグインは迅速にアップデートされており、Firebaseの仕様変更に対応しています。

導入方法

導入方法はGitHubのページに書かれている通りなのですが、いくつか注意事項もあります。

まず、既存のFirebaseのプラグインを削除します。下記は"cordova-plugin-firebase"を使っていた場合。

ionic cordova platform remove android
ionic cordova plugin remove cordova-plugin-firebase
ionic cordova plugin add cordova-plugin-firebase-lib

仕様変更でAndroidXというプラグインが必要になったそうなので、そちらも入れます。

cordova plugin add cordova-plugin-androidx
cordova plugin add cordova-plugin-androidx-adapter

Githubに書かれている通り、cordova-android,cordova-iosのサポート対象のバージョンが決まっています。普通にplatform addすると僕の場合androidのバージョンが下位になってしまいます。そこでバージョンを8.0.0で指定するため、下記のように追加します。

ionic cordova platform add android@8.0.0

事後処理

これでビルドしてみると、gradleのバージョンが合わないというエラーが発生しました。

 > Minimum supported Gradle version is 4.10.1. Current version is 4.4. If using the gradle wrapper, try editing the distributionUrl in /Users/maruse/dev/native/foot4/gradle/wrapper/gradle-wrapper.properties to gradle-4.10.1-all.zip

そこで、~/.bashrcに記載していたCORDOVA_ANDROID_GRADLE_DISTRIBUTION_URLのバージョンをandroid/app/build.gradleのgradleVersion にある4.10.3に変更します。

ちなみにCORDOVA_ANDROID_GRADLE_DISTRIBUTION_URLを宣言していない場合は、android/gradle/wrapper/gradle-wrapper.propertiesのdistributionUrlを書き換えると解決するそうです。

gradleをアップデートしたためプラグインもアップデートしないといけませんので、Android/build.gradleとandroid/app/build.gradleを下記のように修正します。ちなみにgradleプラグインの対応バージョンはこちらに書かれています。

    dependencies {
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files

        classpath 'com.android.tools.build:gradle:3.3.2'

さらに"The minSdk version should not be declared in the android manifest file"なるエラーがでましたので、android/app/src/main/AndroidManifest.xmlandroid/CordovaLib/AndroidManifest.xmlにある、minSdKを宣言している行を削除しました。

感想

これだけアップデートを繰り返されてしまうと、プラグイン側の対応が間に合いませんね。Googleが作ったアプリフレームワークのFlutterはFirebaseへの対応が良いという噂を聞いていますので、そちらの利用も検討してみようかな。(それがGoogleの狙いか?)