基于离子的游戏服务测量问题

Posted

技术标签:

【中文标题】基于离子的游戏服务测量问题【英文标题】:Problem with play-services-measurement-base on ionic 【发布时间】:2019-09-24 15:56:16 【问题描述】:

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

当我运行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.

【问题讨论】:

【参考方案1】:

此处发布的任何解决方案都没有对我有用。一个很棒的人在cordova-firebase-plugin官方repo中打开了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

现在它开始工作了。

【讨论】:

先生,安装上述命令后出现错误:错误:无法通过注册表获取插件github.com/dpa99c/…。 确实适用于 android。但是在添加平台 ios 时出现错误:无法安装 'cordova-plugin-firebase': CordovaError: Using "requireCordovaModule" to load non-cordova module "xcode" is not supported.相反,将此模块添加到您的依赖项中并使用常规“require”来加载它。 截至今天(6 月 19 日),该 PR 的所有者已经创建了他的 own fork of the plugin,因此安装它的命令是 ionic cordova plugin add https://github.com/dpa99c/cordova-plugin-firebase 效果很好。非常感谢。上帝保佑你:)【参考方案2】:

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

systems_qualigyhere 的评论是关于锁定 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 的答案中获取了版本,并且可以成功地重建我的项目。

【讨论】:

它有效,谢谢! project.properties 文件可以在 platforms/android/ 文件夹中找到。 @HankLapidez:我收到此错误:> 找不到 com.google.firebase:firebase-core:16.0.8。在以下位置搜索: @Kapilsoni 尝试“com.google.firebase:firebase-core:16.0.9”或搜索 gradle 缓存中已有的版本 @HankLapidez:我收到此错误:错误:找不到符号 public class FirebasePluginInstanceIDService extends FirebaseInstanceIdService ^ @Kapilsoni FirebaseInstanceIdService 已被弃用......虽然它仍然应该找到那个类。【参考方案3】:

我们现在正在维护一个分叉版本,其中包含不同作者所做的所有更改和修复(他们已将所有人从 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

干杯!

【讨论】:

嗨,我正在尝试安装它,但它卡住了 你能提到你的cordova-clicordova-androidcordova-ios版本吗? 我不确定它是否已更新我现在看到这个问题“TypeError:无法读取未定义的属性'getToken',我正在使用离子1 @Rich5757 我还在使用 Ionic 1....你解决了这个 Firebase 问题和 getToken 问题了吗?我认为 getToken 是相关的,因为我的问题都是同时开始的,而且我们没有对插件/依赖项进行任何更改(现在将近 3 个月)。所以无论谷歌对 Firebase 做了什么,都会导致 getToken 问题。 @ShashankAgrawal - 这将是未来的永久修复cordova-plugin-firebase 还是我需要永久附加我的升级脚本才能使用这个新的分叉版本的插件?【参考方案4】:

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

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

【讨论】:

【参考方案5】:

照它说的做,在 Andoird 项目目录中运行 ./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"

【讨论】:

【参考方案6】:

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

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

更新: 查看here 以获取可能的修复。 This 公开公关似乎有效。希望它很快就会被合并。

【讨论】:

是的,我的想法和你一样。我认为问题在于firebase插件。我可以尝试,但是我们将它用于 a/b 测试,所以我应该尽快让它工作。如果你解决了这个问题,请告诉我:) 他们的 travis 测试失败了github.com/arnesson/cordova-plugin-firebase【参考方案7】:

我刚刚在 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

【讨论】:

它也对我有用,我在上面添加了代码 gradle.build 和 project.properties 文件【参考方案8】:

离子 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.+

【讨论】:

【参考方案9】:

我遇到了同样的错误,我刚刚删除了 platforms/android 并再次安装(ionic cordova prepare android)然后一切恢复原状。

【讨论】:

这似乎是有道理的,以前的构建与当前插件及其依赖项(可能)冲突,从头开始必须根据已安装的插件正确生成。我会测试,非常感谢您的提示。【参考方案10】:

首先,尝试使用删除firebase

ionic cordova plugin rm cordova-plugin-firebase

然后重新安装。

【讨论】:

【参考方案11】:

按照我对科尔多瓦火力基地问题的完美解决方案。

    ionic cordova 平台 rm android npm 卸载 -g 科尔多瓦 npm install -g cordova@9.0.0 ionic cordova 平台添加android(例如v8.0.0) ionic cordova 插件添加 cordova-plugin-firebasex(例如 v6.0.7) ionic cordova 运行 android

新的 cordova-plugin-firebasex 插件将解决与 firebase 相关的所有问题,它确实是 cordova-plugin-firebase 的不错替代品。

【讨论】:

以上是关于基于离子的游戏服务测量问题的主要内容,如果未能解决你的问题,请参考以下文章

电解质分析仪系列 Electrolyte Analyzer Series

离子/角度提供者/服务 - 单身 - 单个实例?

精华 | 基于TAITherm软件的锂离子电池热失控仿真

我想裁剪像椭圆形的图像。我正在研究基于离子框架的应用程序。有没有 Cordova 插件? [关闭]

android nGPS:基于磁场而不是gps或细胞三角测量获取位置

非靶代谢组学数据预处理XCMS+IPO