所以我正在使用Firebase来获取我的应用分析,但我的用户一直在报告崩溃,我无法在任何测试设备中重新创建(崩溃)。
我在我的应用程序中编写了一个错误报告库,它会通过电子邮件向我发送详细日志,并找出主要原因。
令人惊讶的是,我甚至没有在我的应用程序中使用FirebaseMessagingService,所以想知道是否有人可以帮助我在这里?尝试搜索解决方案,但无法找到它,所以在这里创建一个线程。
这是日志:
ava.lang.NoSuchMethodError: No static method zzad()Lcom/google/firebase/iid/zzan; in class Lcom/google/firebase/iid/zzan; or its super classes (declaration of 'com.google.firebase.iid.zzan' appears in /data/app/com.myapp.myapp-1/base.apk:classes2.dex)
at com.google.firebase.messaging.FirebaseMessagingService.zzb(Unknown Source)
at com.google.firebase.iid.zzb.onStartCommand(Unknown Source)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3770)
at android.app.ActivityThread.-wrap23(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6816)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1563)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1451)
我的build.gradle:
apply plugin: 'com.android.application'
//apply plugin: 'com.google.android.gms.oss-licenses-plugin'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.myapp.myapp"
minSdkVersion 18
targetSdkVersion 28
multiDexEnabled true
resConfigs "en"
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
exclude 'META-INF/services/com.fasterxml.jackson.core.ObjectCodec'
exclude 'META-INF/services/com.fasterxml.jackson.core.JsonFactory'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
dexOptions {
jumboMode true
}
}
repositories {
google()
flatDir {
dirs 'libs'
}
maven {
url "https://jitpack.io"
}
jcenter()
}
dependencies {
implementation 'com.devbrackets.android:exomedia:4.0.3'
// Radio
implementation 'com.google.android.exoplayer:exoplayer:r2.4.3'
implementation 'com.cleveroad:audiovisualization:1.0.1'
implementation 'com.google.code.gson:gson:2.8.5'
// General
implementation 'org.jsoup:jsoup:1.11.2'
implementation 'com.onesignal:OneSignal:3.10.6'
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.duolingo.open:rtl-viewpager:1.0.2'
implementation 'com.github.chrisbanes:PhotoView:1.3.1'
implementation 'com.android.support:multidex:1.0.3'
// Google Support Libraries
implementation 'com.android.support:multidex-instrumentation:1.0.3'
implementation "com.android.support:exifinterface:$supportlib_version"
implementation "com.android.support:cardview-v7:$supportlib_version"
implementation "com.android.support:appcompat-v7:$supportlib_version"
implementation "com.android.support:recyclerview-v7:$supportlib_version"
implementation "com.android.support:design:$supportlib_version"
implementation "com.android.support:support-v4:$supportlib_version"
implementation "com.android.support:support-core-utils:$supportlib_version"
implementation "com.android.support:support-media-compat:$supportlib_version"
implementation "com.android.support:customtabs:$supportlib_version"
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
// Google Services
implementation "com.google.android.gms:play-services-oss-licenses:$gps_version"
implementation "com.google.android.gms:play-services-gcm:$gps_version"
implementation "com.google.android.gms:play-services-ads:$gps_version"
implementation files('libs/YouTubeAndroidPlayerApi.jar')
// Firebase
implementation 'com.google.firebase:firebase-core:16.0.3'
// Flurry Analytics
implementation 'com.flurry.android:analytics:11.6.0@aar'
// About Fragment
implementation project(':library')
implementation project(':crashlib')
// Easyrest Library
implementation('com.github.fcopardo:easyrest:v1.4.2@aar') {
transitive = true
}
// ta4j for technical analysis
implementation 'org.ta4j:ta4j-core:0.11'
// display libraries
implementation 'com.github.florent37:fiftyshadesof:1.0.0'
// retrofit for quick and safe network communication
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
implementation 'com.github.faruktoptas:RetrofitRssConverterFactory:0.0.2'
// RxJava for multithreaded network requests with retrofit
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0'
// PriceChart Library
implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
// Okhttp And Logging
implementation 'com.squareup.okhttp3:okhttp:3.14.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.12.1'
// Custom font lib
implementation 'uk.co.chrisjenx:calligraphy:2.3.0'
// Material Dialogs - Sort By Menu
implementation 'com.afollestad.material-dialogs:core:0.9.6.0'
// Toggle Button - Currency Card
implementation 'com.nex3z:toggle-button-group:1.1.2'
// Favrorite Button - Star
implementation 'com.github.ivbaranov:materialfavoritebutton:0.1.5'
// Bottom Dialog Sheet
implementation 'com.github.marcoscgdev:DialogSheet:1.0.5'
// Intro Lib
implementation 'agency.tango.android:material-intro-screen:0.0.5'
implementation 'com.jakewharton.threetenabp:threetenabp:1.2.0'
}
apply plugin: 'com.google.gms.google-services'
// Work around
com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true
项目gradle:
allprojects {
repositories {
google()
jcenter()
maven {
url "https://maven.google.com"
}
maven {
url 'https://jitpack.io'
}
}
}
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:3.3.2'
classpath 'com.google.gms:google-services:4.2.0'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0'
//classpath 'com.google.android.gms:oss-licenses-plugin:0.9.4'
}
repositories {
google()
maven {
url 'https://maven.google.com/'
}
jcenter()
}
}
ext {
supportlib_version = '28.0.0'
gps_version = '[16.0.0, 17.0.0)'
fb_version = '[15.0.0, 17.0.0)'
archRoomVersion = "1.0.0"
}
//Ensure that all dependencies use the same version of the Android Support library
subprojects {
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex')) {
details.useVersion "$supportlib_version"
}
if (details.requested.group == 'com.google.android.gms'
&& !details.requested.name.contains('multidex')) {
details.useVersion "$gps_version"
}
if (details.requested.group == 'com.google.firebase'
&& !details.requested.name.contains('multidex')) {
details.useVersion "$fb_version"
}
}
}
}
allprojects {
repositories {
google()
jcenter()
}
}
提前致谢!
删除此行(它会导致比解决更多的问题 - 它只隐藏问题):
com.google.gms.googleservices.GoogleServicesPlugin.config.disableVersionCheck = true
依赖关系应该看起来很相似(ads
和gcm
现在低于com.google.firebase
):
// Google Services
implementation "com.google.android.gms:play-services-base:16.1.0"
implementation "com.google.android.gms:play-services-auth:16.0.1"
// implementation "com.google.android.gms:play-services-ads:17.2.0"
// Firebase
implementation "com.google.firebase:firebase-core:16.0.8"
implementation "com.google.firebase:firebase-messaging:17.5.0"
implementation "com.google.firebase:firebase-ads:17.2.0"
当然,这还需要代码中的名称空间更改,以及从GCM
迁移到FCM
,但这种迁移肯定迟早会到期,因为GCM
被关闭。
这可能是由库/应用程序的已编译版本和运行时版本之间的库依赖关系的不同版本冲突引起的。可能是您的其他依赖项之一依赖于较旧版本的FCM或其他库。基本上,您的项目可能取决于同一个库的不同版本。
正如Martin在他的回答中提到的,删除版本检查,如果再次编译,应该在日志中显示确切的冲突,然后您可以非常轻松地解决它。