插件冲突错误:Google plus 和 Push 插件

Posted

技术标签:

【中文标题】插件冲突错误:Google plus 和 Push 插件【英文标题】:Plugin conflict error : Google plus and Push plugin 【发布时间】:2018-11-01 02:12:51 【问题描述】:

我需要同时使用 google plus 和推送通知,但 Phonegap Build 出现错误

请通过更新版本来修复版本冲突 google-services 插件(有关最新版本的信息是 可在 bintray.com/android/...) 或更新版本 com.google.android.gms 到 11.6.2。

index.html:

<!DOCTYPE html>
<html>
  <head>
    <title>Device Ready Example</title>

    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" src="push.js"></script> 


    <script> 

    // Wait for device API libraries to load
    //
    function onLoad() 
        document.addEventListener("deviceready", onDeviceReady, false);
    

    // device APIs are available
    //
    function onDeviceReady() 
        // Now safe to use device APIs
        var push = PushNotification.init(
            "android": 
              "senderID": "xxxxxxxxxx"
            ,
        );


    push.on('registration', function(data) 
        alert('registration event: ' + data.registrationId);
        console.log('registration event: ' + data.registrationId);

        var oldRegId = localStorage.getItem('registrationId');
        if (oldRegId !== data.registrationId) 
        // Save new registration ID
        localStorage.setItem('registrationId', data.registrationId);
        // Post registrationId to your app server as the value has changed
     

    var parentElement = document.getElementById('registration');
    var listeningElement = parentElement.querySelector('.waiting');
    var receivedElement = parentElement.querySelector('.received');

    listeningElement.setAttribute('style', 'display:none;');
    receivedElement.setAttribute('style', 'display:block;');
  );


    </script>
  </head>
  <body onload="onLoad()">
  </body>
</html>

config.xml:

    <widget id="com.phonegap.notificationtest1" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0">
        <name>notificationtest1</name>
        <description>
         notificationtest1
        </description>
        <author email="support@phonegap.com" href="http://phonegap.com">
            sqlchild
        </author> 


            <preference name="android-minSdkVersion" value="17" /> 

            <preference name='phonegap-version' value='cli-8.0.0' />

            <preference name='pgb-builder-version' value='2' />



    <plugin name="phonegap-plugin-push" spec="2.1.3">   
            <param name="SENDER_ID" value="xxxxxxxxxxxx" />
    </plugin> 


        <plugin name="cordova-plugin-googleplus" source="npm" spec="5.3.0"></plugin>  


        <platform name="android">   

            <resource-file src="app/google-services.json" target="app/google-services.json" />  

        </platform>      


        <content src="index.html" />

【问题讨论】:

@DaveAlden :嘿,戴夫,你能告诉我如何分叉插件并使用它 【参考方案1】:

cordova-plugin-googlepluscurrently pins v11.8.0 的 Play 服务库 (com.google.android.gms)。

Firebase 库的phonegap-plugin-push currently pins v11.6.2 反过来固定播放服务库的 v11.6.2。

因此,Play Services 库的冲突版本会导致您的构建错误。

phonegap-plugin-push 现在也是 depends 上的 cordova-support-google-services 到 pull in v3.2.0 of the Google Services plugin,这也间接引用了 Play Services 库。

TL;DR:您需要让cordova-plugin-googleplus 指定与phonegap-plugin-push 相同的播放服务库版本。

如果您在本地构建,您可以使用cordova-android-play-services-gradle-release 来执行此操作:

cordova plugin add cordova-android-play-services-gradle-release  --variable PLAY_SERVICES_VERSION=11.6.2

但是,您正在使用 doesn't support the execution of hooks scripts 所依赖的 Phonegap Build 进行构建。

因此,您最好的解决方案可能是 fork cordova-plugin-googleplus 并将 Play Services 版本设置为 plugin.xml 中的 11.6.2,然后在您的构建中使用该 fork。

【讨论】:

好的,戴夫,谢谢你会做的,然后回来找你 :) 让你知道 能否也给我提供本地构建的步骤 我已经分叉了插件,但现在我如何在我的 config.xml 中使用它?我需要在 npm 上上传吗? &gt;Do I need to upload it on npm? 不直接在 config.xml 中从 github 引用它:&lt;plugin name="cordova-plugin-googleplus" source="git" spec="https://github.com/yourGithubUsername/cordova-plugin-googleplus"&gt;&lt;/plugin&gt; &gt;Can you also provide me with the steps to build locally。见https://cordova.apache.org/docs/en/latest/guide/cli/index.htmlhttps://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html

以上是关于插件冲突错误:Google plus 和 Push 插件的主要内容,如果未能解决你的问题,请参考以下文章

Firebase FCM 与 google plus cordova 插件冲突 - IOS

错误:修复版本冲突(google-services 插件)

Google Plus PHP API 与其他 API 文件冲突

无法在 ionic 3 项目的模块中导入 google plus 插件

解决Mybatis-plus和pagehelper依赖冲突

安装 fcm 插件时出现cordova错误