代码之家  ›  专栏  ›  技术社区  ›  sqlchild

插件冲突错误:google plus和push plugin

  •  1
  • sqlchild  · 技术社区  · 6 年前

    我需要使用google plus和push通知,但是 PhoneGap生成出错 :

    请通过更新 谷歌服务插件(最新版本的信息是 可在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" />
    

    1 回复  |  直到 6 年前
        1
  •  2
  •   DaveAlden    6 年前

    cordova-plugin-googleplus currently pins v11.8.0 游戏服务库( com.google.android.gms )

    phonegap-plugin-push currently pins v11.6.2 FireBase库,反过来又锁定了Play Services库的v11.6.2。

    因此,Play Services库的冲突版本会导致生成错误。

    PhoneGap插件推送 现在也是 depends cordova-support-google-services pull in v3.2.0 of the Google Services plugin 也间接引用了Play Services库。

    医生:你需要 Cordova插件GooglePlus 指定播放服务库的同一版本 PhoneGap插件推送 .

    如果你是本地建筑,你可以使用 cordova-android-play-services-gradle-release 要执行此操作:

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

    但是,您正在使用PhoneGap构建 doesn't support the execution of hooks scripts 在哪一个 cordova-android-play-services-gradle-release 依赖。

    所以你最好的解决办法可能是 Cordova插件GooglePlus 并将播放服务版本设置为 11.6.2 在里面 plugin.xml ,然后在构建中使用那个分叉。