我正在尝试使用 FCM 和 https://www.simplifiedcoding.net/firebase-cloud-messaging-android/教程向我的应用程序添加通知服务一切都已经完成并且像获取令牌等一样工作,但现在在创建消息处理程序后,我开始收到错误:
Error:(22, 26) error: cannot access AbstractSafeParcelable
class file for com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable not found
并且构建失败。请指导。Gradle 的代码是:
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
repositories {
maven { url 'https://maven.fabric.io/public' }
maven {
url "https://s3-ap-southeast-1.amazonaws.com/godel-release/godel/"
}
}
android {
compileSdkVersion 25
buildToolsVersion "24.0.3"
useLibrary 'org.apache.http.legacy'
defaultConfig {
applicationId "jss.smartapp"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
testCompile 'junit:junit:4.12'
compile files('libs/activation.jar')
compile files('libs/additionnal.jar')
//Apache IO
compile files('libs/commons-io-2.5.jar')
compile 'com.android.support:design:25.0.0'
compile 'com.android.support:appcompat-v7:25.0.0'
//Crashlytics
compile('com.crashlytics.sdk.android:crashlytics:2.6.5@aar') {
transitive = true;
}
//Dropbox
compile 'com.dropbox.core:dropbox-core-sdk:2.0.1'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.squareup.okhttp:okhttp:2.4.0'
//FTP
compile files('libs/ftp4j-1.7.2.jar')
//Http
compile 'com.squareup.okhttp3:okhttp:3.4.2'
//Instamojo
compile 'com.instamojo:android-sdk:+'
//Material Design Didalogs
compile 'com.afollestad.material-dialogs:commons:0.9.1.0'
compile 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
//GSON
compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
//multidex dependency
compile 'com.android.support:multidex:1.0.1'
//box dependencies
compile 'com.box:box-java-sdk:2.1.1'
compile 'com.box:box-android-sdk:3.0.2'
//google drive dependency
compile 'com.google.android.gms:play-services-drive:10.0.1'
//one drive dependency
compile('com.onedrive.sdk:onedrive-sdk-android:1.2+') {
transitive = false
}
compile('com.microsoft.services.msa:msa-auth:0.8.+')
compile('com.microsoft.aad:adal:1.1.+')
//justify test
compile 'com.github.bluejamesbond:textjustify-android:2.1.6'
//image downnloader
/*compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'*/
//Glide Image downloading
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.android.support:support-v4:25.1.0'
compile 'com.google.firebase:firebase-messaging:9.2.1'
}
apply plugin: 'com.google.gms.google-services'
在您的 Gradle 文件中,所有版本的 google-play-service 和 firebase 都应该使用相同的版本。
当您使用 :
compile 'com.google.android.gms:play-services-drive:10.0.1'
您应该使用 :
compile 'com.google.firebase:firebase-messaging:10.0.1'
//而不是 9.2.1
在同一版本中拥有所有Google Play服务行:
compile 'com.google.android.gms:play-services:11.0.1'
compile 'com.google.android.gms:play-services-maps:11.0.1'
compile 'com.google.firebase:firebase-core:11.0.1'
compile 'com.google.firebase:firebase-messaging:11.0.1'
这是一个Android Studio错误,它不会像播放服务*库那样自动升级Firebase库。
自动更新
compile 'com.google.android.gms:play-services-drive:10.0.1'
没有自动更新(需要手动将版本升级到与播放服务相同*)
compile 'com.google.firebase:firebase-messaging:10.0.1'
使用类似以下内容:
dependencies {
compile 'com.google.android.gms:play-services:11.0.1'
compile 'com.google.firebase:firebase-core:11.0.1'
compile 'com.google.firebase:firebase-messaging:11.0.1'
}
apply plugin: 'com.google.gms.google-services'
确保应用插件位于依赖项下方。
请确保您的 Google 服务版本与您的 Firebase 版本匹配。当前编译的"com.google.android.gms:play-services-drive:10.0.1"与编译"com.google.firebase:firebase-messaging:9.2.1"不匹配您需要做的是将"com.google.firebase:firebase-messaging:9.2.1"更改为"com.google.firebase:firebase-messaging:10.0.1",以便版本匹配。
最终拯救我的原因:
在 android studio 中,切换到项目视图而不是 Android 视图。删除 .gradle 文件夹和 gradle.properties 文件。清理项目。再次同步分级。
我不知道为什么会这样。仅删除 .gradle 文件夹并没有完成这项工作,新创建的 gradle.properties 与旧文件夹完全相同!但是我的问题已解决。