添加cordova fcm插件后Gradle版本冲突

问题描述

将 FCM 插件添加到项目后,它不再构建。

cordova 在哪里检查 GRADLE 版本?来自 package.json? 我尝试更改 package.json 上的 ANDROID_GRADLE_TOOLS_VERSION 规范,但没有成功。

cordova plugin add cordova-plugin-fcm-with-dependecy-updated
cordova run android
FCMPlugin: Support for Gradle v4 or lower is deprecated. Please upgrade to a newer version.FAILURE: Build Failed with an exception.

* What went wrong:
A problem occurred configuring project ':app'.
> Could not create task ':app:processDebugGoogleServices'.
   > Cannot create a proxy class for abstract class 'GoogleServicesTask'.
BUILD Failed in 3s

我尝试使用 Tiago 建议的插件版本 7.0.8

cordova plugin add [email protected]

现在我和相机插件有冲突

> Task :app:compileDebugJavaWithJavac
C:\myapp\app\platforms\android\app\src\main\java\org\apache\cordova\camera\CameraLauncher.java:40: error: package android.support.v4.content does not exist
import android.support.v4.content.FileProvider;
                                 ^
C:\myapp\app\platforms\android\app\src\main\java\org\apache\cordova\camera\CordovaUri.java:25: error: package android.support.v4.content does not exist
import android.support.v4.content.FileProvider;
                                 ^
C:\myapp\app\platforms\android\app\src\main\java\org\apache\cordova\camera\FileProvider.java:21: error: package android.support.v4.content does not exist
public class FileProvider extends android.support.v4.content.FileProvider {}
                                                            ^
C:\myapp\app\platforms\android\app\src\main\java\org\apache\cordova\camera\CameraLauncher.java:303: error: cannot find symbol
        this.imageUri = new CordovaUri(FileProvider.getUriForFile(cordova.getActivity(),^
  symbol:   method getUriForFile(Activity,String,File)
  location: class FileProvider
C:\myapp\app\platforms\android\app\src\main\java\org\apache\cordova\camera\CameraLauncher.java:801: error: cannot find symbol
                        Uri tmpFile = FileProvider.getUriForFile(cordova.getActivity(),File)
  location: class FileProvider
5 errors

> Task :app:compileDebugJavaWithJavac Failed

FAILURE: Build Failed with an exception.

删除 fcm 插件相机插件再次起作用。 同样奇怪的是,即使在删除 fcm 插件后它仍然在项目中并在控制台上显示错误消息

FCMPlugin.js:46 FCM: has been created
FCMPlugin.js:41 FCM: Ready error:  Class not found
FCMPlugin.js:43 FCM: Ready!
FCMPlugin.js:23 FCM: Error listening to native events Class not found

解决方法

显然,我们将不得不等待 fcm 插件人员解决此问题。 前几天打开了这个github issue,看来只能在插件里更新版本了。

目前的解决方法是降级到以前的版本。我使用了 "cordova-plugin-fcm-with-dependecy-updated": "7.0.8" 并且正在工作。

Github 问题:https://github.com/andrehtissot/cordova-plugin-fcm-with-dependecy-updated/issues/222

,

如果您的 Cordova 项目包含同时引用 Android 支持库和 AndroidX 的插件/库,则您的 Android 构建将失败,因为这两者无法在 Android 构建中并行存在。

此插件提供了一个 shim,用于将旧 Android 支持库的引用迁移到 Cordova Android 平台项目中的新 AndroidX 映射。

这使得启用了 AndroidX 的 Cordova 项目(例如使用cordova-plugin-androidx)能够成功构建,即使它包含引用旧支持库的插件。

该插件使用钩子脚本替换任何旧的支持库引用:

app/build.gradle 和 project.properties 中的 Gradle 工件,带有新的工件映射 AndroidManifest.xml 或带有新类映射的 Java 源代码(Cordova 插件)中的类/包名称。