Ionic Cordova app stopped compiling after Google's June 17th Firebase SDK update

Solution 1:

This build failure is due to a major version release of the Google Play Services and Firebase libaries on June 17.

The new library versions have the following requirements:

  • Upgrade com.android.tools.build:gradle to v3.2.1 or later.
  • Upgrade compileSdkVersion to 28 or later.
  • Update your app to use Jetpack (AndroidX)

The first two requirements can be resolved by updating to use [email protected].

The third requires that your Android project migrates to using AndroidX (Jetpack). AndroidX is the successor to the widely-used Android Support Library. AndroidX now used by the latest versions of Play Services/Firebase libraries and the Support library is used by many existing plugins such as cordova-plugin-firebase. The two libraries cannot live side-by-side in the same Android build - doing so will lead to build failure.

To resolve this issue, add the following two plugins your Cordova project:

  • cordova-plugin-androidx to enable AndroidX in the Android project.
  • cordova-plugin-androidx-adapter to dynamically patch the source code of any plugins using the Support Library to use the AndroidX equivalents.

For a working example of how to try this out in a test project, see my comment on this Github issue.

Note: if you are using cordova-plugin-firebase and encountering errors, you can instead use my fork of that plugin which is published as cordova-plugin-firebasex and is fixed to resolve issues caused by the new Firebase SDK:

rm -Rf platforms/android
cordova plugin rm cordova-plugin-firebase
rm -Rf plugins/ node_modules/
npm install
cordova plugin add cordova-plugin-firebasex
cordova platform add android

Solution 2:

1. First Answer

We have created a PR for this https://github.com/wizpanda/cordova-plugin-firebase-lib/pull/13 but that requires upgrade of cordova-android to 8.0.0.

A workaround is being done for cordova-android 7.x but meanwhile, a discussion is also ongoing whether to keep support for it or not.

2. Edit - Jun 19, 2019

A new version v3.3.0 is released to fix the issue caused by Google Firebase release which supports cordova-android <= 7.1.4. https://github.com/wizpanda/cordova-plugin-firebase-lib/pull/14#issuecomment-503499409

cordova plugin remove cordova-plugin-firebase-lib
# Or if you were using original fork
#cordova plugin remove cordova-plugin-firebase
cordova plugin add [email protected]

3. Edit - Jun 20, 2019

A new version v4.0.1 is released to fix the issue caused by Google Firebase release which supports cordova-android >= 8.0.0. https://github.com/wizpanda/cordova-plugin-firebase-lib/pull/14#issuecomment-503499409

cordova plugin remove cordova-plugin-firebase-lib
# Or if you were using original fork
#cordova plugin remove cordova-plugin-firebase
cordova plugin add cordova-plugin-firebase-lib

Solution 3:

Having in platform/android/project.properties following settings :

cordova.gradle.include.1=cordova-plugin-firebase/app-build.gradle
cordova.system.library.4=com.google.firebase:firebase-core:+
cordova.system.library.5=com.google.firebase:firebase-messaging:+
cordova.system.library.6=com.google.firebase:firebase-config:+
cordova.system.library.7=com.google.firebase:firebase-perf:+

I had the same issue (error: resource android:attr/ttcIndex not found).

[email protected] + cordova-plugin-androidx + cordova-plugin-androidx-adapter worked for me perfectly.

Thanks for this solution.

I am just wondering if it is a good long time bet to use those two plugins. Any opinion ?

Solution 4:

Follow the sequence below for cordova-android <= 7.1.4

cordova platform remove android
cordova plugin remove cordova-plugin-firebase
cordova plugin add [email protected]
cordova platform add android

cordova-plugin-firebase is now included in cordova-plugin-firebase-lib