【问题标题】:Ionic Cordova app stopped compiling after Google's June 17th Firebase SDK update谷歌 6 月 17 日 Firebase SDK 更新后,Ionic Cordova 应用程序停止编译
【发布时间】:2019-11-01 09:36:00
【问题描述】:

在 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:执行失败 适配

【问题讨论】:

    标签: android firebase cordova ionic-framework ionic3


    【解决方案1】:

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

    新的库版本有以下要求:

    • com.android.tools.build:gradle 升级到 v3.2.1 或更高版本。
    • compileSdkVersion 升级到 28 或更高版本。
    • 更新您的应用以使用 Jetpack (AndroidX)

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

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

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

    有关如何在测试项目中试用此功能的工作示例,请参阅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
    

    【讨论】:

    • 我有一个工作项目,所以我不得不删除插件目录 -rf ./plugins 并重新添加 android 平台 ionic cordova platform rm android ionic cordova platform add android@8.0.0 然后 @DaveAlden 解决方案完美运行。
    • 您是救生员,您的解决方案在花费数小时试图恢复到以前的版本后神奇地发挥了作用。谢谢!
    • 我已经尝试过了,但我无法从 fcm 获取令牌构建成功我的项目处于关键条件 @DanielGoncalves 我需要你的帮助,请你帮我我的 Skype id 是:离子。五个
    • @KishanOza 你能把我添加到你的 GitHub 存储库吗?也许我可以看看你的项目用户名> dan62
    • 确定它在 bitbucket 中所以给我你的电子邮件@DanielGoncalves
    【解决方案2】:

    1。第一个答案

    We 已为此 https://github.com/wizpanda/cordova-plugin-firebase-lib/pull/13 创建了 PR,但这需要将 cordova-android 升级到 8.0.0

    正在为cordova-android 7.x 做一个解决方法,但与此同时,关于是否继续支持它的讨论也在进行中。

    2。编辑 - 2019 年 6 月 19 日

    发布新版本 v3.3.0 以解决支持cordova-android <= 7.1.4 的 Google Firebase 版本导致的问题。 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@3.3.0
    

    3。编辑 - 2019 年 6 月 20 日

    发布了一个新版本 v4.0.1,以解决支持 cordova-android >= 8.0.0 的 Google Firebase 版本引起的问题。 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
    

    【讨论】:

      【解决方案3】:

      在 platform/android/project.properties 中有以下设置:

      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:+
      

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

      cordova-android@8.0.0 + cordova-plugin-androidx + cordova-plugin-androidx-adapter 完美地为我工作。

      感谢您的解决方案。

      我只是想知道长期使用这两个插件是否合适。有意见吗?

      【讨论】:

        【解决方案4】:

        对于cordova-android

        cordova 平台移除 android
        科尔多瓦插件删除科尔多瓦插件火力基地
        cordova 插件添加 cordova-plugin-firebase-lib@3.3.0
        科尔多瓦平台添加安卓

        cordova-plugin-firebase 现在包含在 cordova-plugin-firebase-lib 中

        【讨论】:

        • 你应该得到更多的支持。我发现解决问题的最简单的解决方案。
        • 绝对最佳答案!如此简单,而且确实有效!
        【解决方案5】:

        我建议您尝试在项目的 platform/android 文件夹中添加 build-extras.gradle:

        configurations.all {
            resolutionStrategy {
                 force 'com.android.support:support-v4:27.1.1'
                 force 'com.google.android.gms:play-services-tagmanager:16.0.8'
                 force 'com.google.android.gms:play-services-base:16.1.0'
                 force 'com.google.android.gms:play-services-tasks:16.0.1'
                 force 'com.google.android.gms:play-services-basement:16.2.0'
                 force 'com.google.android.gms:play-services-gcm:16.1.0'
                 force 'com.google.android.gms:play-services-stats:16.0.1'
                 force 'com.google.android.gms:play-services-location:16.0.0'
                 force 'com.google.android.gms:play-services-auth:16.0.1'
                 force 'com.google.android.gms:play-services-identity:16.0.0'
            }
        }
        

        这样,您将强制构建命令忽略更新并使用以前的版本。 您甚至不需要更改任何插件(也不需要更改 android 平台版本)!

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

        【讨论】:

          【解决方案6】:
          ionic cordova platform remove android
          
          ionic cordova plugin remove cordova-plugin-firebase
          
          ionic cordova plugin add cordova-plugin-firebase-lib@3.3.0
          

          (如果你删除了这个 npm install --save @ionic-native/firebase@4 install 再次)

          我在 android 7.0.0 中存在 dex 合并 问题。所以我用过android 8.0.0

          使用安卓8.0.0

          ionic cordova platform add android@8.0.0
          
          if required install below 2 plugin for android 8.0.0
          
          ionic cordova plugin add cordova-plugin-androidx
          

          ionic cordova plugin add cordova-plugin-androidx-adapter
          

          【讨论】:

            【解决方案7】:

            如果您已经尝试了所有方法,但仍无法构建您的 cordova android 项目,请按照这些步骤操作。

            我已经在这个问题上工作了五天,这是唯一对我有用的解决方案(它是对解决方案和 cmets 的重新编译,按照我为使我的项目工作而遵循的顺序排序):

            1. 安装最新的cordova版本 (cordova@9.0.0):

              npm install -g 科尔多瓦

            2. 创建一个新的空白cordova项目(使用相同的反向域和项目名称):

              cordova create folderName com.projectName.app projectName

            3. 添加最新的cordova-android平台(cordova-android@8.0.0):

              cordova平台添加android

            4. 安装原始项目中出现的每个插件(cordova-plugin-firebase 除外)。我建议您在每次安装插件后构建您的应用程序,以检查一切是否正常。

            5. 安装cordova-plugin-firebase-lib

              cordova 插件添加 cordova-plugin-firebase-lib

            6. 安装cordova-plugin-androidx

              cordova插件添加cordova-plugin-androidx

            7. 安装cordova-plugin-androidx-adapter

              cordova插件添加cordova-plugin-androidx-adapter

            8. 将 firebase 设置文件复制到项目的根目录:Android 的 google-services.json 和 iOS 的 GoogleService-Info.plist

            9. config.xml 复制资源标签(用于图标和启动画面)并将它们粘贴到新的 config.xml 中。

            <platform name="android">
                <icon src="res/android/drawable-hdpi/icon.png" />
                <icon density="ldpi" src="res/android/drawable-ldpi/icon.png" />
                <icon density="mdpi" src="res/android/drawable-mdpi/icon.png" />
                <icon density="hdpi" src="res/android/drawable-hdpi/icon.png" />
                <icon density="xhdpi" src="res/android/drawable-xhdpi/icon.png" />
            </platform>
            <platform name="ios">
                <icon height="180" src="res/ios/icon/1024x1024.png" width="1024" />
                <icon height="180" src="res/ios/icon/Icon-60x60@3x.png" width="180" />
                <icon height="60" src="res/ios/icon/Icon-20x20@3x.png" width="60" />
                <icon height="120" src="res/ios/icon/Icon-40x40@3x.png" width="120" />
                <icon height="76" src="res/ios/icon/Icon-76x76@1x.png" width="76" />
                <icon height="152" src="res/ios/icon/Icon-76x76@2x.png" width="152" />
                <icon height="40" src="res/ios/icon/Icon-20x20@2x.png" width="40" />
                <icon height="80" src="res/ios/icon/Icon-40x40@2x.png" width="80" />
                <icon height="57" src="res/ios/icon/Icon-29x29@2x.png" width="57" />
                <icon height="29" src="res/ios/icon/Icon-29x29@1x.png" width="29" />
                <icon height="58" src="res/ios/icon/Icon-29x29@2x.png" width="58" />
            </platform>
            1. old res 文件夹复制到项目的根目录(包含所有图标和启动画面的文件夹)。

              李>
            2. 将新 /www 文件夹的内容替换为原始文件夹的内容

            3. 最后,构建您的项目

              cordova 构建安卓

            就我而言,我有两个与新的 cordova、cordova-android、firebase sdk 版本冲突的插件:cordova-plugin-firebasecordova-plugin-locationservices,这些步骤让我可以继续我的项目。

            【讨论】:

              【解决方案8】:

              删除文件夹node_modules和文件package-lock.json,然后在终端运行:

              npm install
              

              【讨论】:

                【解决方案9】:

                这是我修复的具体步骤

                cordova build android
                

                删除平台文件夹

                ionic cordova platform remove android
                ionic cordova plugin remove cordova-plugin-firebase
                ionic cordova plugin add cordova-plugin-firebase-lib@3.3.0
                ionic cordova plugin add cordova-plugin-androidx-adapter
                cordova build android
                ionic cordova platform add android
                cordova plugin add cordova-plugin-whitelist
                ionic cordova emulate
                

                【讨论】:

                  【解决方案10】:

                  解决方案:
                  请按照以下顺序获取
                  科尔多瓦安卓平台

                  cordova 平台移除 android
                  科尔多瓦插件删除科尔多瓦插件火力基地
                  cordova 插件添加 cordova-plugin-firebase-lib@3.3.0
                  科尔多瓦平台添加安卓

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2013-06-12
                    • 2020-06-20
                    • 2023-04-01
                    • 2010-10-02
                    • 2018-11-08
                    相关资源
                    最近更新 更多