基于离子的播放服务测量问题

Problem with play-services-measurement-base on ionic

我有一个离子项目的问题,它昨天开始发生而没有修改任何依赖项。

当我 运行 ionic cordova run android 我有这个错误:

The library com.google.android.gms:play-services-measurement-base is being requested by various other libraries at [[16.5.0,16.5.0], [16.4.0,16.4.0]], but resolves to 16.5.0. Disable the plugin and check your dependencies tree using ./gradlew :app:dependencies.

但是我这几天没有安装任何依赖

这是我的 cordova plugins 列表:

cordova-fabric-plugin 1.1.14-dev "cordova-fabric-plugin"
cordova-plugin-advanced-http 2.0.9 "Advanced HTTP plugin"
cordova-plugin-app-version 0.1.9 "AppVersion"
cordova-plugin-appminimize 1.0.1 "AppMinimize"
cordova-plugin-apprate 1.4.0 "AppRate"
cordova-plugin-appsee 2.6.0 "Appsee"
cordova-plugin-badge 0.8.8 "Badge"
cordova-plugin-datepicker 0.9.3 "DatePicker"
cordova-plugin-device 2.0.2 "Device"
cordova-plugin-dialogs 2.0.1 "Notification"
cordova-plugin-facebook4 3.2.0 "Facebook Connect"
cordova-plugin-file 6.0.1 "File"
cordova-plugin-firebase 2.0.5 "Google Firebase Plugin"
cordova-plugin-freshchat 1.2.0 "Freshchat plugin for Phonegap"
cordova-plugin-geolocation 4.0.1 "Geolocation"
cordova-plugin-globalization 1.11.0 "Globalization"
cordova-plugin-inappbrowser 3.0.0 "InAppBrowser"
cordova-plugin-inapppurchase-fixed 1.1.0 "In App Purchase"
cordova-plugin-insomnia 4.3.0 "Insomnia (prevent screen sleep)"
cordova-plugin-local-notification 0.9.0-beta.2 "LocalNotification"
cordova-plugin-media 5.0.2 "Media"
cordova-plugin-nativegeocoder 3.2.2 "NativeGeocoder"
cordova-plugin-nativestorage 2.3.2 "NativeStorage"
cordova-plugin-network-information 2.0.1 "Network Information"
cordova-plugin-splashscreen 5.0.2 "Splashscreen"
cordova-plugin-statusbar 2.4.2 "StatusBar"
cordova-plugin-whitelist 1.3.3 "Whitelist"
cordova-plugin-x-socialsharing 5.4.4 "SocialSharing"
cordova-support-google-services 1.2.1 "cordova-support-google-services"
es6-promise-plugin 4.2.2 "Promise"
ionic-plugin-deeplinks 1.0.19 "Ionic Deeplink Plugin"
nl.kingsquare.cordova.background-audio 1.0.1 "background-audio"
pushwoosh-cordova-plugin 7.13.0 "Pushwoosh"

我在 platforms/android/app/build.gradle 中发现了这些依赖项(如果知道的话):

dependencies {
    implementation fileTree(dir: 'libs', include: '*.jar')
    // SUB-PROJECT DEPENDENCIES START
    implementation(project(path: ":CordovaLib"))
    compile "com.android.support:support-v4:24.1.1+"
    compile "com.squareup.okhttp3:okhttp-urlconnection:3.10.0"
    compile "com.google.android.gms:play-services-tagmanager:+"
    compile "com.google.firebase:firebase-core:+"
    compile "com.google.firebase:firebase-messaging:+"
    compile "com.google.firebase:firebase-config:+"
    compile "com.google.firebase:firebase-perf:+"
    compile "com.android.support:support-v4:26.+"
    compile "com.android.support:support-v4:27.+"
    compile "com.android.support:appcompat-v7:27.+"
    compile "com.android.support:recyclerview-v7:27.+"
    compile "com.android.support:design:27.+"
    compile "com.android.support.constraint:constraint-layout:1.0.2"
    compile "com.github.bumptech.glide:glide:4.7.1"
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.60"
    compile "com.pushwoosh:pushwoosh:5.13.0"
    compile "com.pushwoosh:pushwoosh-amazon:5.13.0"
    compile "com.pushwoosh:pushwoosh-badge:5.13.0"
    compile "com.pushwoosh:pushwoosh-inbox:5.13.0"
    compile "com.pushwoosh:pushwoosh-inbox-ui:5.13.0"
    compile "com.facebook.android:facebook-android-sdk:4.38.1"
    compile "com.appsee:appsee-android:2.6.0"
    // SUB-PROJECT DEPENDENCIES END
}

不知道去哪里找。我在 platforms/android/build.gradle 中找到了一个禁用 GoogleServicesPlugin 版本检查的变通方法:com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true 但它对我不起作用。

提前致谢。

编辑:看来我不是唯一一个。 Here.

我遇到了完全相同的问题。问题是由 cordova-plugin-firebase 引起的。我目前正在调查。当我找到确切的课程时将更新此答案。

现在您可以尝试 ionic cordova plugin rm <plugin> 看看这是否也解决了您当前的错误。

更新: 看看 here for possible fixes. This open PR 似乎有效。希望它能很快合并。

按照说的做,在Android项目目录下运行./gradlew :app:dependencies

support-v4连加三遍:

compile "com.android.support:support-v4:24.1.1+"
compile "com.android.support:support-v4:26.+"
compile "com.android.support:support-v4:27.+"

与此类似 Gradle 项目同步:

implementation project(":CordovaLib")

implementation "com.google.android.gms:play-services-tagmanager:16.0.8"

implementation "com.google.firebase:firebase-messaging:18.0.0"
implementation "com.google.firebase:firebase-config:17.0.0"
implementation "com.google.firebase:firebase-perf:17.0.0"
implementation "com.google.firebase:firebase-core:16.0.9"

implementation "com.android.support:design:28.0.0"
implementation "com.android.support:support-v4:28.0.0"
implementation "com.android.support:customtabs:28.0.0"
implementation "com.android.support:appcompat-v7:28.0.0"
implementation "com.android.support:recyclerview-v7:28.0.0"
implementation "com.android.support:animated-vector-drawable:28.0.0"
implementation "com.android.support.constraint:constraint-layout:1.1.3"

implementation "com.facebook.android:facebook-android-sdk:4.42.0"
implementation "com.squareup.okhttp3:okhttp-urlconnection:3.10.0"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.60"
implementation "com.github.bumptech.glide:glide:4.9.0"
implementation "com.appsee:appsee-android:2.6.0"

implementation "com.pushwoosh:pushwoosh:5.13.0"
implementation "com.pushwoosh:pushwoosh-amazon:5.13.0"
implementation "com.pushwoosh:pushwoosh-badge:5.13.0"
implementation "com.pushwoosh:pushwoosh-inbox:5.13.0"
implementation "com.pushwoosh:pushwoosh-inbox-ui:5.13.0"

我在 Yannic Hamann 回答 (Ionic Forum) 中提到的论坛中找到了适合我的解决方案。

来自 systems_qualigy here 的评论是关于锁定 project.properties 中的版本。

cordova.system.library.4=com.google.firebase:firebase-core:16.0.8 
cordova.system.library.5=com.google.firebase:firebase-messaging:17.5.0 
cordova.system.library.6=com.google.firebase:firebase-config:16.4.1 
cordova.system.library.7=com.google.firebase:firebase-perf:16.2.4

我还需要锁定

的版本
com.google.android.gms:play-services-tagmanager:16.0.8

我从 Martins answer 中获取了版本并且可以成功重建我的项目。

我刚刚在 android 平台目录下的 project.properties 中添加了下面的内容,它开始工作了

cordova.system.library.4=com.google.firebase:firebase-core:16.0.8 
cordova.system.library.5=com.google.firebase:firebase-messaging:17.5.0 
cordova.system.library.6=com.google.firebase:firebase-config:16.4.1 
cordova.system.library.7=com.google.firebase:firebase-perf:16.2.4

这里没有发布对我有用的解决方案。一个很棒的人在 cordova-firebase-plugin 官方回购中打开了一个 pull request 并且它有效。

我做的步骤:

1 - 使用 ionic cordova plugin remove cordova-plugin-firebase

删除 cordova-firebase-plugin

2 - 安装:ionic cordova plugin add cordova-plugin-firebasex

3 - rm -rf node_modules/ plugins/ platforms/android package-lock.json

4 - ionic cordova platform add android && npm install

现在可以使用了。

我遇到了同样的错误,我只是删除了 platforms/android 并重新安装 (ionic cordova prepare android) 然后一切恢复原样.

问题是由于 firebase 的最新更新导致某些方法现已弃用,请查看 Android Firebase releases。要解决此问题,请使用以下 cordova 插件补丁:

cordova plugin add https://github.com/dpa99c/cordova-plugin-firebase#GH-1057-April-05-android-build-issue

我们现在正在维护一个分叉版本,其中包括不同作者所做的所有更改和修复(他们让每个人都免于此 Google 的举动)。

https://github.com/wizpanda/cordova-plugin-firebase-lib#difference-from-the-fork-repository

所以,现在只需删除现有的插件:

ionic cordova plugin remove cordova-plugin-firebase

现在,使用

安装新版本
ionic cordova plugin add cordova-plugin-firebase-lib --save

干杯!

离子 4:20-05-2019

这对我有用:

platforms/android/project.properties

target=android-27
android.library.reference.1=CordovaLib
android.library.reference.2=app
cordova.system.library.1=com.squareup.okhttp3:okhttp-urlconnection:3.10.0
cordova.gradle.include.1=cordova-plugin-firebase/com1-build.gradle
cordova.system.library.2=com.google.android.gms:play-services-tagmanager:16.0.8
cordova.system.library.3=com.google.firebase:firebase-core:16.0.8
cordova.system.library.4=com.google.firebase:firebase-messaging:17.5.0
cordova.system.library.5=com.google.firebase:firebase-config:16.4.1
cordova.system.library.6=com.google.firebase:firebase-perf:16.2.4
cordova.system.library.7=com.android.support:support-annotations:27.+

首先,尝试使用

删除 firebase
ionic cordova plugin rm cordova-plugin-firebase

然后重新安装。

遵循我对 cordova firebase 问题的完美解决方案。

  1. ionic cordova 平台 rm android
  2. npm uninstall -g cordova
  3. npm 安装-g cordova@9.0.0
  4. ionic cordova 平台添加 android(例如 v8.0.0)
  5. ionic cordova 插件添加 cordova-plugin-firebasex(例如 v6.0.7)
  6. 离子科尔多瓦 运行 android

新的 cordova-plugin-firebasex 插件将解决与 firebase 相关的所有问题,它是 cordova-plugin-firebase 的一个很好的替代品。