com.google.android.gms.common.internal.safe parcel.safe parcelable 未找到
Posted
技术标签:
【中文标题】com.google.android.gms.common.internal.safe parcel.safe parcelable 未找到【英文标题】:com.google.android.gms.common.internal.safe parcel.safe parcelable not found 【发布时间】:2017-05-15 11:30:29 【问题描述】:我正在尝试使用 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'
【问题讨论】:
我想是 Multidex 造成的。由于使用multidex时所有类不在同一个dex中,所以可能会出现这种情况。 【参考方案1】:在您的 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
【讨论】:
感谢@GuillaumeAgis 工作。谢谢大佬...!! 在 ionic 2 中我遇到了同样的问题,我应该在哪里运行编译命令?【参考方案2】:你必须拥有所有的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'
【讨论】:
知道为什么文档使用com.google.android.gms:play-services-base:11.0.4
吗?谢谢你拯救我的理智!
耶。非常感谢。它对我有用。也再次感谢。【参考方案3】:
这是一个 Android Studio 错误,它不提供像 play-services* 库那样自动升级 firebase 库。
自动更新
compile 'com.google.android.gms:play-services-drive:10.0.1'
没有自动更新(需要手动升级到与播放服务相同的版本*)
compile 'com.google.firebase:firebase-messaging:10.0.1'
【讨论】:
【参考方案4】:使用这样的东西:
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'
确保应用插件位于依赖项之下。
【讨论】:
【参考方案5】:确保您的 google 服务版本与您的 firebase 版本匹配。 当前编译 'com.google.android.gms:play-services-drive:10.0.1' 不匹配 compile 'com.google.firebase:firebase-messaging:9.2.1' 您需要做的是将 'com.google.firebase:firebase-messaging:9.2.1' 更改为 'com.google.firebase:firebase-messaging:10.0.1' 以便版本匹配。
【讨论】:
【参考方案6】:最后是什么救了我:
在 android studio 中,切换到 Project 视图而不是 Android 视图。 删除 .gradle folderm 以及 gradle.properties 文件。 清理项目。 再次同步 gradle。
我不知道为什么会这样。仅删除 .gradle 文件夹并没有完成这项工作,新制作的 gradle.properties 与旧文件夹完全相同!但是我的问题是固定的。
【讨论】:
以上是关于com.google.android.gms.common.internal.safe parcel.safe parcelable 未找到的主要内容,如果未能解决你的问题,请参考以下文章