Google Play 服务的开源实现

软件推荐 安卓 开源的
2021-11-05 21:40:42

Google Play Services 是一个适用于 Android 的库,提供各种好东西,例如地理定位

虽然 Android 是开源的,但Google Play 服务是专有的
许多开发人员忽略了这种差异,并将他们的应用程序链接到 Google Play 服务,使它们无法在 100% 开源的设备上使用。此类应用程序在尝试访问 Google Play 服务时通常不会安装或强制关闭。

Google Play 服务是否有任何开源实现?
或者至少有一个假装 Google Play 服务存在的模拟/存根?

2个回答

正如 OP 明确要求的那样,我的答案来了——限制缺少经验。

前面的免责声明:

我对以下内容没有个人经验。它只是在我的“要尝试的东西”列表上一段时间,所以我只检查了详细信息。

答案:

根据其描述, NOGAPPS正是您正在寻找的。该项目旨在提供一个与Google 服务框架(GSF)提供的接口完全相同的 Android API,不同之处在于它们使用其他服务作为后端。这些服务实际上是开源的,而不是专有的,因此可以自由调查代码,并建立信任级别。

部分项目:

  • 网络位置:
    Apache 许可证。使用本地数据库(存储在 SDCard 上)或 Apple 数据库。我想我记得在这里使用 OpenCellID 的一些事情,但至少链接的 XDA 文章没有这样说明。状态:发布(即稳定)
  • 地图 API v1:
    LGPL。使用 OpenStreetMap 作为后端。状态:测试版
  • BlankStore:
    一个开源的 Google Play 商店客户端。阿帕奇许可证。状态:停产

不可用,但在工作中:

  • 登录服务。状态:开发
  • 服务框架。状态:开发
  • 地图 API v2。状态:未知。

尽管使用其他后端,NOGAPPS提供了完全相同的界面。因此,依赖某些专有 Google 代码工作的应用程序不应该注意到,而是透明地使用提供的开源挂件。当然只有在可用时(例如 LoginService 仍然不可用,所以它不能工作)。我不知道是否有用于尚未完成的东西的“虚拟接口”(让应用程序认为例如 LoginService 存在,但目前无法访问服务器 - 所以它们不会崩溃但只是缺少相应的功能)。

对我来说,这听起来是一件很棒的事情。如果我早一点知道(在我重新刷新我的最后一个设备之前),我已经尝试过而不是 GApps :)

有关更多信息、正在进行的开发等详细信息,请参阅NOGAPPS项目的链接 XDA 页面。

NOGAPPS:帮助开发 Google Play 服务的开源替代品

µg 项目(Izzy 在他的网站上进行了精彩的描述)

MaR-V-iN 开始开发他命名的 NOGAPPS 包 - 一组应用程序和框架,旨在填补缺失的 gapps 包的空白。该项目现在以 µg Project 的名义继续进行。

该项目的主要思想是为注入 Android 生态系统的 Google 构建所有专有部件的免费替代品。

如今,这主要是两个组件,都称为 Play Services :

  • 客户端库播放服务,由开发人员和GmsCore注入应用程序

  • 此库使用的服务组件。播放服务或多或少包括所有较新的专有 Android 功能。

这些组件也总结为 3 个部分:

  1. GmsCore 或多或少对应于 Google Services

  2. GsfProxy 通过 Google Cloud Messaging 为其他应用程序补充核心

  3. FakeStore 或者 Blank Store 甚至原生 Playstore

地理位置

目前,Android 有两个用于地理定位的 API。其中之一是由UnifiedNlp实现的开源 Location API,另一个是专有的 Play Services Location API。

单独的 UnifiedNlp 不提供任何功能,而是充当多个后端的中间件。所有这些都可以使用 F-Droid 下载和更新

.

以下是可用的地理定位和(反向)地理编码后端列表:

  • AppleWifiNlpBackend - 使用 Apple 服务解析 wifi 位置的后端。

  • OpenWlanMapNlpBackend - 使用 OpenWlanMap.org 来解析用户位置的后端。

  • OpenBmapNlpBackend - 使用 openBmap 来解析用户位置的后端。

  • MozillaNlpBackend - 使用 Mozilla 位置服务来解析用户位置的后端。

  • PersonalWifiBackend - 使用电话生成数据库的 WiFi AP 的本地位置提供程序。LocalGSMLocationProvider - 基于本地 opencellid 的位置提供程序后端

  • LocalGSMBackend - 具有单独数据库文件 (lacells.db) 的 gsm 单元的本地位置提供程序
  • NominatimGeocoderBackend

安装说明

https://github.com/microg/android_packages_apps_UnifiedNlp/blob/master/README.md 专用 XDA 线程:http: //forum.xda-developers.com/android/apps-games/app-g-unifiednlp-floss-wi -fi-cell-tower-t2991544

使用需要“播放服务”API 的应用

以下是您在没有 Google Play 服务时可能会遇到的一些情况:

  • 由于缺少 Google Maps API,某些应用程序无法安装。

  • 由于缺少 Maps API 或 Play 许可证检查问题,某些应用程序在启动时 fc(强制关闭)。

  • 某些应用程序硬编码链接到多个 Google Apps,因此在某些情况下会强制关闭或做出意外反应。

微克 GmsCore 来了。这个应用程序提供了一些 Play Services 的实现。

目前主要的开发者只专注于使用较多的播放服务部分:

  • LoginService :允许您登录到 Google 帐户 (OAuth)

  • Google Cloud Messaging:GCM(替代 C2DM)是一种在手机后台运行的推送通知服务。它侦听由使用它的应用程序存储在 Google 的 GCM 服务器中的消息(由GsfProxy补充)

为此,您需要签入您的设备,以便应用知道他们必须为哪个 Google 帐户发送消息。

播放服务位置 API

Maps API (v2) :将对 Google Maps API 的调用转换为对 OpenScienceMap 的调用。由于OpenScienceMap 项目中开发的库,显示地图。

要求

您的纯 AOSP ROM 需要支持 µg 包签名伪造在 Omnirom ( https://gerrit.omnirom.org/#/c/8672/ + https://gerrit.omnirom.org/#/c/13136/ ) 中就是这种情况,并且很快在 Cyanogenmod ( http: //review.cyanogenmod.org/#/c/106162/)。

  • 或者带有 Xposed 模块的FakeGApps 。

  • 4.4+ ROM,无 GAPPS

下载:

新版本可在此处获得:http: //files.brnmod.rocks/apps/GmsCore/Latest/在此处获取 play-services-core-debug.apk:https ://github.com/microg

F-Droid:现在可用:microG F-Droid repo ( https://microg.org/download.html )

用法:

此应用程序创建一个名为 Google 的帐户提供程序。您可以使用 google 帐户进行设置。登录后,µg GmsCore 会继续进行设备签入,除非您禁用它。它为 Google 服务创建一个唯一标识符,并从该数据中去除您的 Google 帐户名称以外的识别位。由于某些原因,签入可能会过期。以下是一些可以用来强制新设备签入的独立技巧: Compose *#*#2432546#*#*(代表 # #CHECKIN# #)如果您不想拨号或因为设备上没有拨号程序而无法拨号,请使用 ADB shell以 root 身份输入:

# am broadcast -a android.provider.Telephony.SECRET_CODE -d android_secret_code://2432546

或者...您可以杀死/重新启动 µg GmsCore 的进程。OS Monitor 可以帮助您做到这一点。

从“Play 商店”获取应用

有许多解决方案可以在不安装 Google Play 商店的情况下获取应用程序 (APK)。但是,它们中的大多数依赖于替代市场,或者您必须从计算机上安装的程序中获取 APK。甚至本机 Playstore 仍然有效(我使用它没有问题)或者有空白存储。

代码:https ://github.com/mar-v-in/BlankStore

构建:https ://github.com/mar-v-in/BlankStore/releases

说明: http: //forum.xda-developers.com/showpost.php?p=29115263 &postcount=84

Blankstore 必须作为系统应用程序安装。

评论:

正如 Izzy 在评论中建议的那样,这是实现开源 Google Play 服务的最简单方法之一,并且可以完美运行

我要衷心感谢 Izzy 允许我将这些更新信息包含在从 NoGApps 继承的这个新项目中,并参考他的材料。

参考

  1. 没有谷歌的安卓:microG
  2. 在没有 Google Apps 的情况下使用 Android