2016-12-31 127 views
45

我正在尝试使用FCM向我的应用程序添加通知服务,并在https://www.simplifiedcoding.net/firebase-cloud-messaging-android/上给出了教程 所有操作都已完成,并且像获取令牌等一样工作。但现在创建消息处理程序后,我开始出现错误:com.google.android.gms.common.internal.safe parcel.safe parcelable not found

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:[email protected]') { 
     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' 

回答

139

在您的摇篮文件谷歌播放服务的所有版本和火力应该使用同一版本

当你使用:

compile 'com.google.android.gms:play-services-drive:10.0.1' 

你应该使用:

compile 'com.google.firebase:firebase-messaging:10.0.1' //而不是9.2.1

+0

这个工作给我,谢谢! –

+2

问题解决了! –

+0

谢谢@GuillaumeAgis –

9

这是一个Android Studio中的错误,它并不提供自动升级火力libs喜欢它的play-services * libs。

自动更新

compile 'com.google.android.gms:play-services-drive:10.0.1' 

没有自动更新(需要手动了版本一样播放服务*)

compile 'com.google.firebase:firebase-messaging:10.0.1' 
+0

谢谢你的解决方案:) :) –

2

确保您的谷歌服务版本的火力版本相匹配。 当前正在编译'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',以便版本匹配。

13

您必须在同一个版本的所有谷歌播放服务专线:

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' 
+0

任何想法为什么文档的使用'''com.google.android.gms:play-services-base:11.0.4 '''?感谢您拯救我的理智! – Wainage

+0

最后更新是...你也可以使用它... –

2

使用这样的事情:

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' 

确保选中应用插件有以下依赖性。