CORDOVA 11 android 构建失败:未解析的引用:FireBaseInstanceId

CORDOVA 11 android build failed: Unresolved reference: FireBaseInstanceId

提问人:Bryan Henrique Cruz 提问时间:1/9/2023 最后编辑:Bryan Henrique Cruz 更新时间:2/24/2023 访问量:1205

问:

我正在尝试在cordova到android上构建我的应用程序。Cordova、Gradle 和 cordova-android 已经过时了,所以我更新了它们。现在的版本是:

  • 节点 16.13.2
  • npm 8.1.2
  • 科尔多瓦 11.0.0
  • 科尔多瓦-安卓 11.0.0
  • Gradle 7.6 版本
  • JDK 11.0.16
  • 安卓API 32
  • Android SDK 构建工具 32.0.0

命令:cordova build --debug android --buildConfig

控制台上的错误:

cordova-plugin-androidx-adapter: Processed 61 source files in 2342ms
[cordova-plugin-push::before-compile] skipping before_compile hookscript.
Checking Java JDK and Android SDK versions
ANDROID_HOME=C:\Users\bryan\AppData\Local\Android\Sdk\ (recommended setting)
ANDROID_SDK_ROOT=C:\Users\bryan\AppData\Local\Android\Sdk\ (DEPRECATED)
Using Android SDK: C:\Users\bryan\AppData\Local\Android\Sdk\
Reading build config file: C:\Users\bryan\Documents\TCHE\bitBucket\backend\build.json
Reading the keystore from: C:\Users\bryan\Documents\TCHE\bitBucket\backend\tchedelivery.keystore
Subproject Path: CordovaLib
Subproject Path: app

> Configure project :app
Adding classpath: com.google.gms:google-services:4.3.8

> Task :app:compileDebugKotlin
w: Runtime JAR files in the classpath should have the same version. These files were found in the classpath:
    C:/Users/bryan/.gradle/caches/transforms-3/37c16254af6de93c45d2587b8dfcd992/transformed/jetified-kotlin-stdlib-jdk7-1.5.20.jar (version 1.5)
    C:/Users/bryan/.gradle/caches/transforms-3/efb587c616850f9dc0cda8853a96db77/transformed/jetified-kotlin-stdlib-1.6.21.jar (version 1.6)
    C:/Users/bryan/.gradle/caches/transforms-3/b6f68fc904e7a7217e6038f3031dcf3a/transformed/jetified-kotlin-stdlib-common-1.6.21.jar (version 1.6)
w: Some runtime JAR files in the classpath have an incompatible version. Consider removing them from the classpath
e: C:\Users\bryan\Documents\TCHE\bitBucket\backend\platforms\android\app\src\main\java\com\adobe\phonegap\push\PushInstanceIDListenerService.kt: (5, 32): Unresolved reference: FireBaseInstanceId
e: C:\Users\bryan\Documents\TCHE\bitBucket\backend\platforms\android\app\src\main\java\com\adobe\phonegap\push\PushInstanceIDListenerService.kt: (25, 5): Unresolved reference: FireBaseInstanceId
e: C:\Users\bryan\Documents\TCHE\bitBucket\backend\platforms\android\app\src\main\java\com\adobe\phonegap\push\PushPlugin.kt: (19, 32): Unresolved reference: FireBaseInstanceId
e: C:\Users\bryan\Documents\TCHE\bitBucket\backend\platforms\android\app\src\main\java\com\adobe\phonegap\push\PushPlugin.kt: (465, 19): Unresolved reference: FireBaseInstanceId
e: C:\Users\bryan\Documents\TCHE\bitBucket\backend\platforms\android\app\src\main\java\com\adobe\phonegap\push\PushPlugin.kt: (472, 21): Unresolved reference: FireBaseInstanceId
e: C:\Users\bryan\Documents\TCHE\bitBucket\backend\platforms\android\app\src\main\java\com\adobe\phonegap\push\PushPlugin.kt: (615, 11): Unresolved reference: FireBaseInstanceId

> Task :app:compileDebugKotlin FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugKotlin'.
> Compilation error. See log for more details

* Try:
> Run with --stacktrace option to get the stack trace.

这仅在我添加“onesignal-cordova-plugin”时发生。插件版本为 3.3.0(最新)。

我尝试更新所有构建工具(cordova 是 9,我将其更新为 11,与 cordova-android 相同,gradle 是 6.6.1,我将其更新为 7.6,...)

我试过干净的gradle缓存(“C:/Users/bryan/.gradle/caches/transforms-3/”)

安卓 Firebase Kotlin Cordova OneSignal

评论


答:

1赞 Mister_CK 1/10/2023 #1

首先,不要一次进行多次升级。尤其是cordova-android。逐个版本查看并阅读相关的更新文档。它们是主要版本,因此具有重大更改。如果你必须一次解决几个错误,你就会让自己更难(在我看来,cordova-android-10 现在也很好)。target-sdk 升级还包括重大更改。以下是 cordova-android 10 的更新文档,它们适用于所有版本: https://cordova.apache.org/announcements/2021/07/20/cordova-android-10.0.0.html

至于您的具体错误,您使用的是哪个版本的 phone-plugin-push(似乎抛出您的错误)?是这个:https://www.npmjs.com/package/phonegap-plugin-push 吗?因为它有一个很大的弃用警告,所以我们切换到这个:https://www.npmjs.com/package/@havesource/cordova-plugin-push(不确定这是原因还是其他问题)。但是您仍然需要修补它以在需要时添加FLAG_MUTABLE。(你可以用patch-package来做到这一点) 插件存储库中的此问题也可能阐明此错误:https://github.com/phonegap/phonegap-plugin-push/issues/2768 根本原因似乎是该 instanceID 的实现已更改。

如果这解决了您的问题,或者是否有任何剩余的错误,请告诉我。我自己完成了这些更新,我知道它们可能会很痛苦,可能需要更多的钩子和补丁。

评论

0赞 Bryan Henrique Cruz 1/10/2023
首先,感谢您的回答,非常有帮助。正如我所说,当我添加 onesignal-cordova-plugin 时会发生此错误,因此这个“phonegap-plugin-push”一定是它的一些依赖项。在应用程序项目中,我使用的是“@havesource”插件。好吧,我会尝试你的建议,并在这里发布结果。
0赞 Mister_CK 1/10/2023
嗯,也许它出于某种原因更新了 firebase 的版本(尽管插件中没有提到),并且新版本不包括 FirebaseInstanceId,因为它已弃用:firebase.google.com/docs/reference/android/com/google/firebase/...。我也在他们的ts.config中看到了这一点:.所以我现在使用 targetSDK(=Api 级别)31 而不是 32。(我参与的项目也仍然使用 targetSDK 31)* Android 4.1 (API Level 16) through 12 (API Level 31), and Amazon FireOS
0赞 Mister_CK 1/10/2023
我认为根据那些 android 文档(带有补丁包)修补插件可能是您最好的选择。
1赞 Bryan Henrique Cruz 2/24/2023 #2

我使用了两个推送通知插件,cordova-plugin-push 和 onesignal-cordova-plugin。当我尝试构建到 android 时,问题发生了。Onesignal 的代码中没有任何对“FireBaseInstanceId”的引用,因此问题出在 cordova-plugin-push 上。 解决的问题:我将插件 https://www.npmjs.com/package/@havesource/cordova-plugin-push 更新为 4.0.0-dev.0 版本而不是 3.0.1(当前默认值)。