如何抑制“避免使用捆绑版本的Google Play服务SDK”警告?

72

我的Android应用中正在使用Google Play服务,因此我在build.gradle中有依赖关系。

compile 'com.google.android.gms:play-services:10.2.1'

但是Android Studio 对此显示警告:避免使用捆绑版本的 Google Play 服务 SDK

Android warning

这个警告是什么意思?我应该如何避免它?我已经搜索了很多,没有找到太多相关信息。


2
这是因为play-services中包含了很多依赖项。请到https://developers.google.com/android/guides/setup查看,并选择你要使用的依赖项,而不是全部使用。 - ZeroOne
@ZeroOne 很棒。感谢您的快速回复。您能否添加一个答案到这个问题,这样我就可以接受它了吗? - Frederick Zhang
1
我之前并没有意识到这个问题。当我在学习教程时,运行Gradle时并没有意识到它有多糟糕。很高兴在项目早期就发现了这个问题。 - Juan Mendez
对我来说,我不需要任何GooglePlay服务;在阅读了ZeroOne的评论后,我从Gradle中删除了:implementation 'com.google.android.gms:play-services:12.0.1',然后APK发布大小减少了3MB。谢谢。 - Bruno L.
2个回答

162
在Google Play服务的版本6.5之前,您必须将整个API包编译到您的应用程序中。在某些情况下,这样做会使得保持应用程序中方法数量(包括框架API、库方法和您自己的代码)低于65,536限制更加困难。从版本6.5开始,您可以选择性地将Google Play服务API编译到您的应用程序中。
在编译com.google.android.gms:play-services:12.0.0时会包含很多依赖项,请参见以下内容。使用play-services可能会导致dex问题和应用程序变得沉重。请仅选择您真正依赖的部分。
Google Play services API    Description in build.gradle

Google+                  com.google.android.gms:play-services-plus:12.0.0
Google Account Login     com.google.android.gms:play-services-auth:12.0.0
Google Actions, 
Base Client Library      com.google.android.gms:play-services-base:12.0.0
Google Address API       com.google.android.gms:play-services-identity:12.0.0
Google Analytics         com.google.android.gms:play-services-analytics:12.0.0
Google Awareness         com.google.android.gms:play-services-awareness:12.0.0
Google Cast              com.google.android.gms:play-services-cast:12.0.0
Google Cloud Messaging   com.google.android.gms:play-services-gcm:12.0.0
Google Drive             com.google.android.gms:play-services-drive:12.0.0
Google Fit               com.google.android.gms:play-services-fitness:12.0.0
Google Location and 
Activity Recognition     com.google.android.gms:play-services-location:12.0.0
Google Maps              com.google.android.gms:play-services-maps:12.0.0
Google Mobile Ads        com.google.android.gms:play-services-ads:12.0.0
Google Places            com.google.android.gms:play-services-places:12.0.0
Mobile Vision            com.google.android.gms:play-services-vision:12.0.0
Google Nearby            com.google.android.gms:play-services-nearby:12.0.0
Google Panorama Viewer   com.google.android.gms:play-services-panorama:12.0.0
Google Play Game         com.google.android.gms:play-services-games:12.0.0
SafetyNet                com.google.android.gms:play-services-safetynet:12.0.0
Android Pay              com.google.android.gms:play-services-wallet:12.0.0
Android Wear             com.google.android.gms:play-services-wearable:12.0.0

Firebase

Firebase API                Description in build.gradle

Analytics                com.google.firebase:firebase-core:12.0.0
Realtime Database        com.google.firebase:firebase-database:12.0.0    
Cloud Firestore          com.google.firebase:firebase-firestore:12.0.0   
Storage                  com.google.firebase:firebase-storage:12.0.0
Crash Reporting          com.google.firebase:firebase-crash:12.0.0  
Authentication           com.google.firebase:firebase-auth:12.0.0    
Cloud Messaging          com.google.firebase:firebase-messaging:12.0.0 
Remote Config            com.google.firebase:firebase-config:12.0.0  
Invites and 
Dynamic Links            com.google.firebase:firebase-invites:12.0.0 
AdMob                    com.google.firebase:firebase-ads:12.0.0 
App Indexing             com.google.firebase:firebase-appindexing:12.0.0 
Performance Monitoring   com.google.firebase:firebase-perf:12.0.0   

编辑 以上版本已经过时。现在他们使用单独的版本控制。 请参考以下链接

Google Play服务 - https://developers.google.com/android/guides/setup
Firebase - https://firebase.google.com/docs/android/setup


Google Cloud Messaging 已被弃用,请使用 Firebase Messaging。 - Ramiz Ansari
1
@ZeroOne...我该如何获取所有依赖项的最新版本? - mdb

14

Google Play服务包含许多单独的API。您可以访问您需要的任何API,而不是访问一个包含所有API的捆绑包。这是更好的方法。请参见表格1 此处


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接