【问题标题】:How to download older google play services?如何下载较旧的 google play 服务?
【发布时间】:2025-12-09 15:20:09
【问题描述】:

我将使用 android google maps v2android emulator/android studio 0.4.0。要求之一是将项目google-play-services_lib 的版本低于/等于emulator 级别。我的模拟器适用于api lv 17。问题是,如何下载比android sdk manager下载的旧版本的google-play-services_lib

【问题讨论】:

  • 所有 Android 设备都应始终拥有最新版本的 Play 服务,因为它们会自动升级。不需要使用较低版本进行测试。
  • 那么,如果您的设备损坏或出现任何问题,您将无法测试您的程序。实际上,如果您正确设置模拟器和库地图也可以工作。但这超出了主题。只需要知道是否甚至可以下载其他版本。或者我对此有一些误解。
  • 如果您的设备损坏到无法获得新的 google play 服务的地步,那么您将无法获得具有更新版本 google play 服务的应用程序的更新,以便是一个有争议的问题
  • 我想我的问题是,你为什么要下载较旧的 APK?
  • 事实上,根据文档,您可以检查是否未安装最新版本并指导用户下载它。请参阅此处的文档:developer.android.com/google/play-services/setup.html#ensure

标签: java android linux google-maps gradle


【解决方案1】:

我意识到这是一个老问题,但我今天遇到了同样的问题(对于真实设备而不是模拟器)并找到了解决方案。

我知道您可以添加代码来提示用户升级到最新版本(请参阅@nathan-walters 的评论)但是,由于复杂的原因,在我的情况下,我需要使用用户已经拥有的任何版本安装在他们的设备上(如果有的话),因此更喜欢使用旧版本的客户端库 (google-play-services_lib) 进行编译/构建

为了进一步研究,我解压了 Android SDK 管理器用来查找和安装“附加”包的 xml,包括最新版本的 Google Play 服务。
如果你有兴趣从这里开始:https://dl-ssl.google.com/android/repository/addon.xml

对于为您提供 google-play-services_lib 库的当前版本(截至 2014 年 11 月 10 日):

https://dl-ssl.google.com/android/repository/google_play_services_6171000_r21.zip

旧版本位于 google 服务器上的同一位置(尽管它们随时可能消失),因此如果您准备将当前安装的库移到一边并手动解压缩旧 zip,那么您可以安装旧版本.我发现了以下内容:

同样的技术可以让您针对在旧版本模拟器中硬连线的不可升级的旧版本 Google 地图(Google Play 服务)进行测试。我还没有针对模拟器测试所有这些版本,但已经在模拟器中成功测试了谷歌地图,以获得基于 Google API (API 19) 的 AVD。

Google 偶尔会尝试更新模拟器。这是一个问题跟踪线程,讨论客户端库和模拟器之间的版本不兼容问题以及谷歌修复这些问题的各种尝试:https://code.google.com/p/android/issues/detail?id=57880

[更新:]

@btrue see answer below 现在有一个比我的答案更好的答案

前往:

<your path to android sdk>/extras/google/m2repository/com/google/android/gms/play-services/

您可以在其中找到包含 AAR 格式的旧版本的目录 - 只需重命名为 .zip 即可提取。

【讨论】:

  • 太棒了。我假设可以使用相同的技术下载旧版本的支持库? SDK 管理器仅显示最新版本。您是如何找到以前的文件名的?
  • @friederbluemle - 为每个以前的文件名查找官方版本号(即 4132530)是命中注定的 - 我通过扫描各种网页/谷歌搜索谈论每个版本找到了这些以前的文件名。因此,我没有那么努力地搜索的空白。
  • 我就是这么想的。谢谢!任何指针如何获得支持库?
  • @friederbluemle - 如上所述查看 addon.xml 的内容表明支持库有一个更简单的命名方案:dl-ssl.google.com/android/repository/support_r21.0.2.zip 所以只要尝试寻找你想要的版本。
  • 谢谢,我试过了。不幸的是,当我得到 404 时,Google 似乎删除了旧版本。
【解决方案2】:

接受的答案太麻烦了。 Google 实际上确实在 SDK 管理器中分发旧版本。
在“Extras”下,有“Google Repository”。
存储库中的 GPS 库可追溯到 3.1.36 版。
它们是 AAR 格式,只是构建项目的一个 zip。
把名字改成*.zip,解压,里面是一个classes.jar,是所有gps类的jar。
如果您不需要任何资源,可以将 jar 文件添加到类路径中。完毕。

ls -l /Applications/Programming/adt-bundle-mac-x86_64-20140702/sdk/extras/google/m2repository/com/google/android/gms/play-services/
total 24
drwxr-xr-x+  8 Norrin  staff  272 Jan 13 01:08 3.1.36
drwxr-xr-x+  8 Norrin  staff  272 Jan 13 01:08 3.1.59
drwxr-xr-x+  8 Norrin  staff  272 Jan 13 01:08 3.2.25
drwxr-xr-x+  8 Norrin  staff  272 Jan 13 01:08 3.2.65
drwxr-xr-x+ 11 Norrin  staff  374 Feb 10 20:09 4.0.30
drwxr-xr-x+  8 Norrin  staff  272 Jan 13 01:08 4.1.32
drwxr-xr-x+  8 Norrin  staff  272 Jan 13 01:08 4.2.42
drwxr-xr-x+  8 Norrin  staff  272 Jan 13 01:08 4.3.23
drwxr-xr-x+  8 Norrin  staff  272 Jan 13 01:08 4.4.52
drwxr-xr-x+  8 Norrin  staff  272 Jan 13 01:08 5.0.89
drwxr-xr-x+  8 Norrin  staff  272 Jan 13 01:08 6.1.11
drwxr-xr-x+  8 Norrin  staff  272 Jan 13 01:08 6.1.71
drwxr-xr-x+  8 Norrin  staff  272 Feb  4 13:43 6.5.87
-rw-r--r--+  1 Norrin  staff  703 Jan 13 01:08 maven-metadata.xml
-rw-r--r--+  1 Norrin  staff   32 Jan 13 01:08 maven-metadata.xml.md5
-rw-r--r--+  1 Norrin  staff   40 Jan 13 01:08 maven-metadata.xml.sha1

【讨论】:

  • 我们可以使用解压命令,unzip aar_file_name.aar -d unzip_folder_name
  • 嗨..我正在尝试按照您的步骤进行操作,但是当我解压缩时,我只看到 AndroidManifest.xml 和 R.txt.. 我没有看到任何 classes.jar
  • @Karthik 您需要从 google play 服务中解压缩您使用的每个“子模块”。例如。 play-services-location/10.0.1/play-services-location-10.0.1.aar 用于定位服务。
  • xml 文件呢?如果您的 .jar 版本没有正确的版本,则会出现膨胀错误。
【解决方案3】:

您可以在SDK Manager 中下载google play services for froyo,它适用于 SDK 8 及更高版本,但无法获得特定版本 AFAIK。当前的 google play 服务适用于 10 及更高版本

【讨论】:

  • 但是我需要使用我想避免的支持库。
  • 为什么需要使用支持库? google play服务不需要支持库
  • 无需支持库即可使用 Froyo 版本的 Google Play 服务库。但是它并没有解决问题:模拟器图像的版本为 3136130,但 Froyo 库需要版本 3265100。
  • 无论如何,您都应该在实际设备上进行测试。模拟器测试不是一个好的解决方案
【解决方案4】:

其中一个要求是放入版本低于/等于模拟器级别的项目 google-play-services_lib。

google-play-services_lib 与模拟器版本无关。

问题是,如何下载比android sdk manager下载的旧版本的google-play-services_lib?

AFAIK,没有办法做到这一点。此外,正如已经指出的那样,这不是必需的。

那么,如果您的设备坏了或出现任何问题,您将无法测试您的程序

这没有任何意义。 google-play-services_lib 是一个。它不是 Google Play 服务本身,而是用于使用 Google Play 服务的客户端库。

但是我需要使用我想避免的支持库

如前所述,Android 支持包与 Play 服务 SDK 无关。 Play 服务 SDK 的一部分可以使用 Android 支持包(例如,SupportMapFragment),但 Play 服务 SDK 不需要 Android 支持包。

【讨论】:

  • 人们可能需要旧版本的 Google Play 服务 SDK 有两个原因:用于全面的应用程序测试,以及因为 Android 4.2.2 的模拟器图像具有旧版本 (3136130),并且不可升级。
  • @JayLieske:您指的是 Google Play Services,而不是 Google Play Services SDK(即google-play-services_lib)。
  • 不,我需要较旧的 SDK(库项目),以便我的应用在启动时不会因以下错误而失败:Google Play 服务已过期。需要 4030500 但找到 3136130
  • @JayLieske:然后,您必须在兼容 Play Services 的硬件上进行测试,直到此时(如果有的话)更新的模拟器图像可用。 Google 不提供较旧的 Play 服务 SDK,因此除非您可以在盗版网站上找到一个(并且相信它没有被篡改等),否则您需要使用能够获得最新 Play 的设备服务。
  • Google 的利益是让开发人员做烦人的工作,让他们的用户升级库。使用最旧的可能版本符合开发人员的利益,以避免在升级库时打扰用户。应该有人维护旧库的存储库。