android – Ionic Cordova应用程序在Google 6月17日Firebase SDK更新后停止编译

在使用Breaking Changes更新Firebase主要版本后,我无法编译Ionic Cordova应用程序,特别是2019年6月17日更新.

我尝试降级到Android Cordova 6.3.0,但我的项目必须是7.0.0.

这是我的离子信息:

@ionic/cli-utils  : 1.19.2
    ionic (Ionic CLI) : 3.20.0

global packages:

    cordova (Cordova CLI) : 8.0.0

local packages:

    @ionic/app-scripts : 3.2.1
    Cordova Platforms  : android 7.0.0 browser 5.0.4
    Ionic Framework    : ionic-angular 3.9.3

System:

    Android SDK Tools : 26.1.1
    Node              : v8.9.1
    npm               : 5.5.1
    OS                : Windows 10

Environment Variables:

    ANDROID_HOME : C:\Development\android-sdk

Misc:

    backend : pro

这是我得到的错误:

:app:processDebugResources
C:\Users\mmzep.gradle\caches\transforms-1\files-1.1\core-1.0.0.aar\73b4a83ab5e76f20c84a66b1c8444d08\res\values\values.xml:133:5-70: AAPT: error: resource android:attr/fontVariationSettings not found.

C:\Users\mmzep.gradle\caches\transforms-1\files-1.1\core-1.0.0.aar\73b4a83ab5e76f20c84a66b1c8444d08\res\values\values.xml:133:5-70: AAPT: error: resource android:attr/ttcIndex not found.

C:\Users\mmzep\Desktop\mario\Seven\SevenPassengerApp\platforms\android\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:95:
error: resource android:attr/fontVariationSettings not found.
C:\Users\mmzep\Desktop\mario\Seven\SevenPassengerApp\platforms\android\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:95:
error: resource android:attr/ttcIndex not found. error: failed linking
references.

Failed to execute aapt

com.android.ide.common.process.ProcessException: Failed to execute
aapt

解决方法

这种构建失败是由于6月17日的 major version release of the Google Play Services and Firebase libaries.

新库版本具有以下要求:

  • 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)

可以通过更新使用cordova-android@8.0.0来解决前两个要求.

第三个要求您的Android项目迁移到使用AndroidX(Jetpack).
AndroidX是广泛使用的Android Support Library的继承者.
最新版本的Play Services / Firebase库和支持库现在使用的AndroidX被许多现有插件(如cordova-plugin-firebase)使用.
这两个库不能在同一个Android构建中并存 – 这样做会导致构建失败.

要解决此问题,请在Cordova项目中添加以下两个插件:

> cordova-plugin-androidx在Android项目中启用AndroidX.
> cordova-plugin-androidx-adapter使用支持库动态修补任何插件的源代码以使用AndroidX等效项.

有关如何在测试项目中尝试此操作的工作示例,请参阅my comment on this Github issue.

注意:如果您使用cordova-plugin-firebase并遇到错误,则可以使用my fork of that plugin作为cordova-plugin-firebasex发布并修复以解决新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

相关文章

Android 如何解决dialog弹出时无法捕捉Activity的back事件 在...
Android实现自定义带文字和图片的Button 在Android开发中经常...
Android 关于长按back键退出应用程序的实现最近在做一个Andr...
android自带的时间选择器只能精确到分,但是对于某些应用要求...