"play-services:9.8.0" 是否包括 "play-services-location:9.8.0"?

Does "play-services:9.8.0" include "play-services-location:9.8.0"?

我正在升级应用程序,在我的 build.gradle 文件中,我有这个:

dependencies {
    ..........
    compile 'com.google.android.gms:play-services:9.8.0'
    ..........
}

在 Urban Airship 提供的 Android SDK 设置快速入门指南中,他们提供了这个作为示例代码:

dependencies {
    ..........
    // Recommended for location services
    compile 'com.google.android.gms:play-services-location:9.8.0'
    ..........
}

如果我使用 "play-services:9.8.0",我会假设它也会包含 "play-services-location:9.8.0",因为 "play-services-location:9.8.0" 应该是 "play-services:9.8.0" 的子集,但我想确认一下。你知道这是否是一个正确的假设吗?谢谢。

来自 Google Api Documentation

您可以使用最新的Google播放服务api:

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

如果您应用中的方法引用数量超过 65K 限制,您的应用可能无法编译。在编译您的应用程序时,您可以通过仅指定您的应用程序使用的特定 Google Play 服务 API 而不是所有这些 API 来缓解此问题。

有选择地将 API 编译到您的可执行文件中:

 compile 'com.google.android.gms:play-services-maps:10.2.1'
compile 'com.google.android.gms:play-services-plus:10.2.1'
compile 'com.google.android.gms:play-services-location:10.2.1'
compile 'com.google.android.gms:play-services-games:10.2.1'
compile 'com.google.android.gms:play-services-gcm:10.2.1'

文档中提供了详细列表。

是的,play-services 是完整的捆绑包。它们被分开以减少您应用程序的方法数,这样您就不会点击 the dex limit. More information can be found here.