android - 谷歌 6 月 17 日 Firebase SDK 更新后,Ionic Cordova 应用程序停止编译
问题描述
在具有重大更改的 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: 错误: 资源 android:attr/fontVariationSettings 未找到。
C:\Users\mmzep.gradle\caches\transforms-1\files-1.1\core-1.0.0.aar\73b4a83ab5e76f20c84a66b1c8444d08\res\values\values.xml:133:5-70: AAPT: 错误: 资源 android:未找到 attr/ttcIndex。
C:\Users\mmzep\Desktop\mario\Seven\SevenPassengerApp\platforms\android\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:95: 错误:资源 android:attr/fontVariationSettings 不成立。C:\Users\mmzep\Desktop\mario\Seven\SevenPassengerApp\platforms\android\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:95: 错误:资源 android:attr/ttcIndex 不成立。错误:链接引用失败。
执行 aapt 失败
com.android.ide.common.process.ProcessException:无法执行 aapt
解决方案
此构建失败是由于6 月 17 日Google Play 服务和 Firebase 库的主要版本发布。
新的库版本具有以下要求:
- 升级
com.android.tools.build:gradle
到 v3.2.1 或更高版本。- 升级
compileSdkVersion
到 28 或更高版本。- 更新您的应用以使用 Jetpack (AndroidX)
前两个要求可以通过更新使用来解决cordova-android@8.0.0
。
第三个要求您的 Android 项目迁移到使用 AndroidX (Jetpack)。 AndroidX是广泛使用的Android 支持库的继承者。AndroidX 现在被最新版本的 Play Services/Firebase 库使用,而 Support 库被许多现有插件使用,例如cordova-plugin-firebase。这两个库不能在同一个 Android 构建中并存——这样做会导致构建失败。
要解决此问题,请在 Cordova 项目中添加以下两个插件:
- cordova-plugin-androidx在 Android 项目中启用 AndroidX。
- cordova-plugin-androidx-adapter使用支持库动态修补任何插件的源代码以使用 AndroidX 等效项。
有关如何在测试项目中进行尝试的工作示例,请参阅我对这个 Github 问题的评论。
注意:如果您使用cordova-plugin-firebase并遇到错误,您可以改用我的该插件的分支,该插件已发布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
推荐阅读
- python - 如何使用 NumPy 通过相应索引在列表列表中查找最大值
- amazon-web-services - Lambda function within VPC doesn't have access to public Internet
- scala - 在 flink 表中创建复合类型
- python - 如何通过 Spotipy 检索收听历史对象?
- java - ChannelTrafficShapingHandler 内部——它是如何工作的?
- java - Guice 依赖问题
- android - 带有百分比指南的约束布局在 wrap_content 中不起作用
- c# - 为什么我没有收到对 RestRequest 的 IRestResponse?
- xml - 使用数据 xml 将属性转换为与父级相同的级别
- google-bigquery - 使用 python 对 BigQuery 查询结果进行分页