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 未找到的主要内容,如果未能解决你的问题,请参考以下文章