谷歌 6月17日 Firebase SDK 更新后,Ionic Cordova 应用程序停止编译

共4个回答,已解决, 标签: android firebase cordova ionic-framework ionic3

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

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

这是我的离子信息:

@ 离子/cli-utils: 1.19.2
离子 (离子 CLI): 3.20.0

全球套餐:

科尔多瓦 (科尔多瓦 CLI): 8.0.0

本地套餐:

@ Ionic/app-脚本: 3.2.1
科尔多瓦平台: android 浏览器 5.0.4 7.0.0
离子框架: 离子角 3.9.3

系统:

Android SDK 工具: 26.1.1
节点: v8.9.1
新公共管理: 5.5.1
操作系统: Windows 10

环境变量:

Android _ home: C: \ 开发 \ android-sdk

杂项:

后端: pro

这是我得到的错误:

: App: process debugresources
C: \ 用户 \ mmzep \。摇篮 \ 缓存 \ 转换 \ 月 \ res 文件-1.1 73b4a83ab5e76f20c84a66b1c8444d08 core-1.0.0.aar \ 价值观很值。 xml: 133: 5-70: AAPT: 错误: 找不到资源 android: attr/font变量设置。

C: \ 用户 \ mmzep \。摇篮 \ 缓存 \ 转换 \ 月 \ res 文件-1.1 73b4a83ab5e76f20c84a66b1c8444d08 core-1.0.0.aar \ 价值观很值。 xml: 133: 5-70: AAPT: 错误: 找不到资源 android: attr/ttcIndex。

C: \ 用户 \ mmzep \ 桌面 \ 马里奥 \ 七乘客应用 \ 平台 \ android \ 应用 \ 构建 \ 中间 \ 增量 \ mergeDebugResources \ 合并。 dir \ 值。 xml: 95: 错误: 资源 android: 找不到 attr/font变量设置。
C: \ 用户 \ mmzep \ 桌面 \ 马里奥 \ 七乘客应用 \ 平台 \ android \ 应用 \ 构建 \ 中间 \ 增量 \ mergeDebugResources \ 合并。 dir \ 值。 xml: 95: 错误: 资源 android: 找不到 attr/ttcIndex。
错误: 链接引用失败。

执行 aapt 失败

Com.android.ide.common.process.ProcessException: 执行 aapt 失败

第1个答案(采用)

此构建失败是由于Google Play 服务和 Firebase libaries 的主要版本发布6 月 17 日。

新的库版本有以下要求:

  • 升级com.android.tools.build:gradleV3.2.1 或更高版本。
  • 升级compileSdkVersion到 28 或以后。
  • 更新应用程序以使用 Jetpack (AndroidX)

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

第三,Android 项目需要使用 AndroidX (Jetpack) 迁移到。 AndroidX是被广泛使用的Android 支持库。 最新版本的 Play Services/Firebase 库现在使用 AndroidX,支持库由许多现有插件使用,如插件-firebase-科尔多瓦。 这两个库不能在同一个 Android 构建中并行运行 -- 这样做会导致构建失败。

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

有关如何在测试项目中尝试此操作的工作示例,请参见我对 Github 问题的评论.

注:如果你正在使用插件-firebase-科尔多瓦遇到错误,你可以使用我那个插件的叉子这是以cordova-plugin-firebasex并修复了新 Firebase SDK 导致的问题:

Rm-Rf 平台/android
科尔多瓦插件-firebase
Rm-Rf 插件/节点模块/
新公共管理安装
添加科尔多瓦插件-firebasex
Cordova 平台添加安卓:
第2个答案

第一个答案

我们为此创建了一个公关Https://github.com/wizpanda/cordova-plugin-firebase-lib/pull/13但是这需要升级cordova-android to 8.0.0

一种解决方法是做的cordova-android但是与此同时,是否继续支持它的讨论也在进行中。

2 、编辑-2019 年 6 月 19 日

新的版本V3.3.0发布是为了解决 Google Firebase 版本支持的问题cordova-android <= 7.1.4Https://github.com/wizpanda/cordova-plugin-firebase-lib/pull/14#issuecomment-503499409

移除科尔多瓦插件-firebase-lib
# 或者如果你使用的是原始叉子
# 科尔多瓦插件移除科尔多瓦插件-firebase
科尔多瓦插件添加 cordova-plugin-firebase-lib@3.3.0

3 、编辑-2019 年 6 月 20 日

新的版本V4.0.1发布是为了解决 Google Firebase 版本支持的问题cordova-android >= 8.0.0Https://github.com/wizpanda/cordova-plugin-firebase-lib/pull/14#issuecomment-503499409

移除科尔多瓦插件-firebase-lib
# 或者如果你使用的是原始叉子
# 科尔多瓦插件移除科尔多瓦插件-firebase
添加 cordova 插件-firebase-lib
第3个答案

具有以下设置的平台/android/project.properties:

科尔多瓦的摇篮.include.1 = 科尔多瓦-插件-重火力点/app-build.gradle
Cordova.system.library.4 = com.google.firebase: firebase-core:
Google.firebase: firebase-消息传递:
Cordova.system.library.6 = com.google.firebase: firebase-config:
Google.firebase: firebase-perf:

我有同样的问题 (错误: 资源 android: 找不到 attr/ttcIndex)。

Cordova-android@8.0.0 cordova-插件-androidx-适配器非常适合我。

感谢这个解决方案。

我只是想知道使用这两个插件是否是一个很好的长期赌注。有意见吗?

第4个答案

我建议你要添加的 build-extras.gradle,内部平台/安卓系统文件夹的项目:

所有 {
解决策略 {
支持: support-v4: 27.1.1'
Google.android.gms: play-services-tagmanager: 16.0.8'
Google.android.gms: play-services-base: 16.0'
Google.android.gms: 播放-服务-任务: 16.0.1'
Google.android.gms: play-services-basement: 16.0'
Google.android.gms: play-services-gcm: 16.0'
Google.android.gms: play-services-stats: 16.0.1'
Google.android.gms: play-services-location: 16.0'
Google.android.gms: play-services-auth: 16.0.1'
Google.android.gms: 播放服务-身份: 16.0'
}
}

这样你就会的 build 命令忽略更新并使用以前的版本。 你甚至不需要更改任何插件 (也不需要更改 android 平台版本)!

每次 firebase 的 libs 更新时,都会发生这种情况..而且很烦人。我希望能够关闭 build 命令上的自动依赖更新,但是我认为这是不可能的。

相关问题

无法通过新项目从 jcenter 获取依赖项 [已关闭] 注意: 无法读取获取 [Ljava.lang.Object;@79d6c4df 的 kotlin 元数据 我的单身可以被多次调用 库未加载: @ rpath/fblemises.框架/fblemises iOS 13.3.1 如何在 Flutter 中连接来自两个 Firestore 集合的数据? 安装 referrer 意图弃用 Cordova 错误: 不支持使用 "需求 Cordova 模块" 加载非 cordova 模块 "q" 谷歌 6月17日 Firebase SDK 更新后,Ionic Cordova 应用程序停止编译 错误: 找不到 org.jetbrains.kotlin: kotlin-stdlib-jdk8: 1.3.60-离子 3 中的 eap-25 游戏服务中存在的问题--基于离子的测量 如何将月份值从一个日期对象复制到另一个日期对象?[复制]