Google Play Services 9.2.1 和 google-services 插件
Posted
技术标签:
【中文标题】Google Play Services 9.2.1 和 google-services 插件【英文标题】:Google Play Services 9.2.1 and google-services plugin 【发布时间】:2016-11-21 22:07:23 【问题描述】:我的应用需要集成google play services和firebase;所以,我下载了官方demo,编译google play services和firebase sdk,google play services和firebase sdk已经更新到v9.2.1,demo运行良好android 5.0+,但在 android 4.4.4 上崩溃。
点击here下载演示!
这是我的 build.gradle:
dependencies
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:support-v4:23.2.1'
compile 'com.google.firebase:firebase-core:9.2.1'
compile 'com.google.android.gms:play-services:9.2.1'
apply plugin: 'com.google.gms.google-services'
这是崩溃日志:
07-19 14:34:29.790 25938-25938/com.google.firebase.quickstart.analytics E/FirebaseCrash:无法初始化崩溃报告 com.google.firebase.crash.internal.zzg$zza:
com.google.android.gms.internal.zzsj$zza:找不到可接受的模块。 本地版本为 0,远程版本为 0。 在 com.google.firebase.crash.internal.zzg.zzbq(未知来源) 在 com.google.firebase.crash.FirebaseCrash。(未知来源) 在 com.google.firebase.crash.FirebaseCrash.getInstance(未知来源) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.google.firebase.FirebaseApp.zza(未知来源) 在 com.google.firebase.FirebaseApp.initializeApp(未知来源) 在 com.google.firebase.FirebaseApp.initializeApp(未知来源) 在 com.google.firebase.FirebaseApp.zzeh(未知来源) 在 com.google.firebase.provider.FirebaseInitProvider.onCreate(未知 资源) 在 android.content.ContentProvider.attachInfo(ContentProvider.java:1591) 在 android.content.ContentProvider.attachInfo(ContentProvider.java:1562) 在 com.google.firebase.provider.FirebaseInitProvider.attachInfo(未知 资源) 在 android.app.ActivityThread.installProvider(ActivityThread.java:5038) 在 android.app.ActivityThread.installContentProviders(ActivityThread.java:4632) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:4566) 在 android.app.ActivityThread.access$1500(ActivityThread.java:145) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1276) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:145) 在 android.app.ActivityThread.main(ActivityThread.java:5266) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:826) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:642) 在 dalvik.system.NativeStart.main(本机方法) 引起:com.google.android.gms.internal.zzsj$zza:不可接受 模块找到。本地版本为 0,远程版本为 0。 在 com.google.android.gms.internal.zzsj.zza(未知来源) 在 com.google.firebase.crash.internal.zzg.zzbq(未知来源) 在 com.google.firebase.crash.FirebaseCrash。(未知来源) 在 com.google.firebase.crash.FirebaseCrash.getInstance(未知 资源) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.google.firebase.FirebaseApp.zza(未知来源) 在 com.google.firebase.FirebaseApp.initializeApp(未知来源) 在 com.google.firebase.FirebaseApp.initializeApp(未知来源) 在 com.google.firebase.FirebaseApp.zzeh(未知来源) 在 com.google.firebase.provider.FirebaseInitProvider.onCreate(未知 资源) 在 android.content.ContentProvider.attachInfo(ContentProvider.java:1591) 在 android.content.ContentProvider.attachInfo(ContentProvider.java:1562) 在 com.google.firebase.provider.FirebaseInitProvider.attachInfo(未知 资源) 在 android.app.ActivityThread.installProvider(ActivityThread.java:5038) 在 android.app.ActivityThread.installContentProviders(ActivityThread.java:4632) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:4566) 在 android.app.ActivityThread.access$1500(ActivityThread.java:145) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1276) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:145) 在 android.app.ActivityThread.main(ActivityThread.java:5266) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:826) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:642) 在 dalvik.system.NativeStart.main(Native Method)
有人可以帮助我吗?
【问题讨论】:
请分享您使用的演示项目的链接或分享一些源代码 请使用这个代替 play service com.google.android.gms:play-services-maps:9.2.1 。让我知道结果 嗨 V V,谢谢你的回答,但这不符合我的要求 【参考方案1】:作为第一步,您应该确定您的应用需要的特定 Play 服务 API,并且只包括那些而不是 com.google.android.gms:play-services
。将 play-services
列为依赖项会拉入所有 Play 服务并导致超出方法引用的 64K 限制。这在棒棒糖之前的设备上运行时会产生问题。
播放服务 API 的完整列表是 provided here,而 Firebase API 是 listed here。找到您需要的并将它们列在您的依赖项中,而不是 com.google.android.gms:play-services
。
要了解当您指定play-services
作为依赖项时拉入的所有库,您可以查看this gist 或打开Gradle 的Android Studio 工具窗口并在@ 下运行androidDependencies
任务987654329@.
【讨论】:
【参考方案2】:Firebase 现在包含在 google-play-services 中 - 请参阅 https://developers.google.com/android/guides/releases#june_2016_-_v92 。但不知何故,API 19(又名 Android 4.4)上的播放服务不包含可用的 firebase 文件。所以你要做的是,只编译播放服务中使用的 API,并从它们中排除 Firebase。
所以删除行 compile 'com.google.android.gms:play-services:9.2.1' 并替换为 compile 'com.google.android.gms:play-services-NAME_OF_USED_API:9.2.1'
替代方案您可以使用不包含 Firebase 的旧版 google-play-services。
【讨论】:
以上是关于Google Play Services 9.2.1 和 google-services 插件的主要内容,如果未能解决你的问题,请参考以下文章
Google Play 服务库更新和缺少符号 @integer/google_play_services_version
使用 google-play-services 进行 Proguard
如何为项目使用不同版本的 google-play-services 库
为啥 Localytics 需要 google-play-services:ads?