虽然Android是开源的,但Google Play服务却是专有的。
许多开发人员都忽略了这种区别,并链接了他们的应用程序添加到Google Play服务中,从而使其在100%开放源代码的设备上无法使用。此类应用尝试访问Google Play服务时通常不会安装或强制关闭。
是否存在Google Play服务的任何开源实现?
或至少有一个模拟/存根假装存在Google Play服务?
#1 楼
µg项目(Izzy在他的网站上有很好的描述)MaR-V-iN开始开发他命名的NOGAPPS软件包-一组具有目标的应用程序和框架填补
缺少缺口包装的空白。现在,该项目以µg
项目的名称继续。
该项目的主要思想是免费注入Google注入Android生态系统的所有
专有零件的替代品。 。
如今这主要是两个组成部分,都称为Play Services:
客户端库play-services,注入到应用程序中由其开发人员和该库使用的服务组件GmsCore组成。 Play服务或多或少地包含了所有较新的专有Android功能。这些组件也分为3个部分:
GmsCore或多或少与Google相对应服务
GsfProxy通过其他应用程序的Google Cloud Messaging补充了核心功能
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的本地位置提供程序。 /> 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
使用需要“ Play Services的API
以下是您没有Google Play服务时可能遇到的一小部分内容:
某些应用程序未安装由于缺少Google Maps API。
由于缺少Maps API或Play许可证检查问题,某些应用在启动时会强制关闭(
某些应用硬编码链接到多个Google Apps的应用,因此会强制关闭或做出意外反应
这是µg GmsCore。该应用程序提供了一些
Play服务的实现。
LoginService:允许您登录到Google帐户(OAuth)
:Google Cloud Messaging:GCM(代替C2DM)是一种推送通知服务,在手机的后台运行。它会在Google的GCM服务器(由GsfProxy补充)中侦听由使用它的应用存储的消息。
要使其正常工作,您需要检入设备,以便应用可以知道哪个Google帐户他们必须发送消息。
Play Services Location 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+不含GAPPS的ROM
下载:
可在此处获取新版本:http://files.brnmod.rocks/apps/GmsCore/最新/。获取
play-services-core-debug.apk并在这里:https://github.com/microg
F-Droid:现在可用:microG F-Droid回购
(https://microg.org/download.html)
用法:
此应用创建了一个名为Google的帐户提供商。您可以使用Google帐户进行设置
。登录后,µg GmsCore会继续进行设备
签入,除非您将其禁用。它为
Google服务创建唯一标识符,并从该数据中去除除您的Google
帐户名之外的其他识别位。由于某些原因,
签入可能会过期。您可以使用以下一些独立的技巧来强制
新设备签入:编写
*#*#2432546#*#*
(代表## CHECKIN ##)如果您不想拨号或因为没有拨号而不能拨号在您设备上的拨号程序上,使用ADB shell作为root用户并键入以下命令:
# am broadcast -a android.provider.Telephony.SECRET_CODE -d android_secret_code://2432546
或...您可以杀死/重新启动µg GmsCore的进程。 OS Monitor可以
帮助您实现这一目标。
从“ Play商店”中获取应用程序
有很多解决方案可以获取应用程序(APK)无需安装Google Play商店。但是,其中大多数依赖其他市场,或者您必须从计算机上安装的程序中获取APK。
即使原生Playstore仍然可以正常工作(我也没有问题),或者还有Blankstore。
代码: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
空白存储区必须作为系统应用程序安装。
备注:
正如Izzy在评论中所建议的那样,这是实现开源Google Play服务且完美运行的最简单方法之一
我要对Izzy表示衷心的感谢,感谢他让我将从NoGApps继承来的这个较新项目的最新信息包括在内,并参考了他的资料。
参考文献
没有Google的Android:microG
使用没有Google Apps的Android
评论
总结,泽维尔!但是,有一些建议:1)不是OpenStreetMap吗?我从未听说过OpenScienceMap :) 2)µG有自己的F-Droid Repo,可以使用它(这是我的工作)。 //感谢您的功劳和参考:)
– Izzy♦
17年4月17日在8:59
@Izzy我修改了这篇文章,是的,有一个开放科学项目,我包含了链接
–xavier_fakerat
17年4月17日在10:19
感谢更新!我对OpenScienceMap表示纠正。一直以为µG使用OpenStreetMap,但您似乎是正确的(通过快速检查可以确认)。
– Izzy♦
17年4月17日在10:28
@Izzy,但我也相信有一些opentreet实现,或者也许我与opencellid混淆。但是,谢谢!
–xavier_fakerat
17年4月17日在10:30
VLC编写了一个开源替代Chromecast库,也包含geoffreymetais.github.io/features/vlc-30/…
– Hans-Christoph Steiner
18年6月20日在9:36
#2 楼
根据OP的明确要求,以下是我的答案-缺少经验。免责声明:
我对以下内容没有任何亲身经历。只是在我的“试用内容”列表上了一段时间,所以我只查看了详细信息。 ,正是您要找的东西。该项目旨在为Android API提供与Google Services Framework(GSF)完全相同的接口,不同之处在于它们使用其他服务作为后端。这些服务实际上是开源的,不是专有的,因此可以自由地研究代码,并建立信任级别。
项目的一部分:
网络位置:
Apache许可证。使用本地数据库(存储在SDCard上)或Apple数据库。我以为我在这里想起了使用OpenCellID的一些技巧,但是至少链接的XDA文章没有这样说。状态:发布(即稳定)
Maps API v1:
LGPL。使用OpenStreetMap作为后端。状态:Beta
BlankStore:
一个开源的Google Play商店客户端。 Apache许可证。状态:已停产
不可用,但在使用中:
LoginService。状态:dev
服务框架。状态:dev
Maps API v2。状态:未知。
尽管使用了其他后端,但NOGAPPS呈现了完全相同的接口。因此,依赖某些Google专有代码运行的应用程序不会引起注意,而是透明地使用提供的开放源代码吊坠。当然,只有在可用时(例如LoginService仍然不可用,因此它不能工作)。我不知道是否还有尚未完成的东西的“虚拟接口”(使应用程序认为例如LoginService在那里,但是目前无法访问服务器–因此它们不会崩溃,只是缺少相应的功能)。
对我来说,这听起来是很了不起的事情。而且,如果我早一点知道(在刷新最后一个设备之前),我尝试使用它代替GApp :)
有关更多信息,正在进行的开发的详细信息等,请参阅链接到NOGAPPS项目的链接XDA页面。
评论
PS:您可能还希望看到没有Google 5的Android:免费释放Droid !,我已经开始使用它了:)
– Izzy♦
14年8月29日在13:21
似乎NOGAPPS已变成microG:microg.org
–锡民
16 Dec 24'在17:47
@TinMan不仅看起来,而且是事实。切换是一年多以前发生的-但只有在我发布此答案之后:)您现在也可以在Github上找到它。
– Izzy♦
16 Dec 27 '18:11
@Izzy很好的答案,如果我引用microG可以吗,我目前正在使用它,并且包括本地Playstore在内的所有东西都可以正常工作,只是地理位置的一些问题有时是不正确的?
–xavier_fakerat
17年4月16日在14:17
@xavier_fakerat µG是NOGAPPS项目的后继者。请注意,这里的答案是从2014年开始的,当时µG还不存在:)而且安装起来更容易,当然:)有关详细信息,我前一段时间写了一篇您可能希望参考的文章。
– Izzy♦
17年4月16日在16:07
评论
没有经验,我无法回答。但您最有可能在寻找NOGAPPS。仍在开发中,尚未准备好所有零件,但看起来很有希望。这样的事情可能不存在。请参阅本文,探讨截至去年秋天的情况。
Google Play服务可以让您的手机正常工作。我记得最近读过,所有Web应用程序都需要Google Play服务才能正常工作。 Google仍然需要一部分非库存的Android操作系统。文章确实谈到了Google使用Play服务再次控制Android的情况。是的,Android是免费和开放源代码,但除了体验外,Google仍需要Google Play服务。我确实在ArsTechnica上找到了我再次找到的文章
@Traven:“所有Web应用程序都需要Google Play服务才能工作”←是错误的。没有Play服务的设备可以使用Web应用程序,也可以使用大多数本机应用程序。