提问人:Bryan Henrique Cruz 提问时间:1/9/2023 最后编辑:Bryan Henrique Cruz 更新时间:2/24/2023 访问量:1205
CORDOVA 11 android 构建失败:未解析的引用:FireBaseInstanceId
CORDOVA 11 android build failed: Unresolved reference: FireBaseInstanceId
问:
我正在尝试在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/”)
答:
首先,不要一次进行多次升级。尤其是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 的实现已更改。
如果这解决了您的问题,或者是否有任何剩余的错误,请告诉我。我自己完成了这些更新,我知道它们可能会很痛苦,可能需要更多的钩子和补丁。
评论
* Android 4.1 (API Level 16) through 12 (API Level 31), and Amazon FireOS
我使用了两个推送通知插件,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(当前默认值)。
评论