Google Play Services — это библиотека для Android, которая предлагает различные возможности, например, для геолокации .
В то время как Android является открытым исходным кодом, сервисы Google Play являются проприетарными .
Многие разработчики игнорируют эту разницу и связывают свои приложения с сервисами Google Play, что делает их непригодными для использования на устройствах со 100% открытым исходным кодом. Такие приложения часто не устанавливаются или принудительно закрываются при попытке доступа к сервисам Google Play.
Существует ли реализация сервисов Google Play с открытым исходным кодом?
Или, по крайней мере, имитация/заглушка, которая делает вид, что сервисы Google Play присутствуют?
µg Project (блестяще описано Иззи на его сайте)
MaR-V-iN начал разработку того, что он назвал пакетом NOGAPPS — набором приложений и фреймворков с целью заполнить пробел в отсутствующем пакете gapps. Этот проект в настоящее время продолжается под названием µg Project.
Основная идея этого проекта заключалась в том, чтобы создать бесплатную замену всем проприетарным частям Google, внедренным в экосистему Android.
В настоящее время это в основном два компонента, оба из которых называются Play Services:
клиентская библиотека play-services, внедряемая в приложения их разработчиками и GmsCore ,
сервисный компонент, используемый этой библиотекой. Сервисы Play включают более или менее все новые проприетарные функции Android.
Эти компоненты также можно разделить на 3 части:
GmsCore более-менее соответствует Google Services
GsfProxy дополняет ядро Google Cloud Messaging для других приложений.
FakeStore или, в качестве альтернативы, Blank Store или даже родной Playstore.
Геолокация
В настоящее время в Android есть два API для геолокации. Один из них — это API Location с открытым исходным кодом, реализованный UnifiedNlp , другой — проприетарный API Location Play Services.
Сам по себе UnifiedNlp не предоставляет никаких функций, но выступает в качестве промежуточного программного обеспечения для нескольких серверных частей. Все их можно загрузить и обновить с помощью F-Droid.
.
Вот список доступных бэкендов для геолокации и (обратного) геокодирования:
AppleWifiNlpBackend — серверная часть, использующая службу Apple для определения местоположений Wi-Fi.
OpenWlanMapNlpBackend — серверная часть, использующая OpenWlanMap.org для определения местоположения пользователя.
OpenBmapNlpBackend — серверная часть, использующая openBmap для определения местоположения пользователя.
MozillaNlpBackend — серверная часть, использующая службу определения местоположения Mozilla для определения местоположения пользователя.
PersonalWifiBackend — локальный провайдер определения местоположения для точек доступа WiFi, использующий базу данных, сгенерированную на телефоне. LocalGSMLocationProvider — серверная часть локального провайдера определения местоположения на основе opencellid.
Инструкции по установке :
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-интерфейсов Play Services
Вот небольшой список вещей, с которыми вы можете столкнуться, если у вас нет сервисов Google Play:
Некоторые приложения не устанавливаются из-за отсутствия Google Maps API.
Некоторые приложения fc (принудительно закрываются) при запуске из-за отсутствия Maps API или проблем с проверкой лицензии Play.
В некоторых приложениях жестко закодированы ссылки на несколько приложений Google, и поэтому в некоторых случаях они принудительно закрываются или реагируют неожиданно.
А вот и мкг GmsCore. Это приложение обеспечивает реализацию некоторых сервисов Play.
В настоящее время основной разработчик сосредотачивает свою разработку только на тех частях игровых сервисов, которые часто используются:
LoginService : позволяет вам войти в учетную запись Google (OAuth)
Google Cloud Messaging: GCM (который заменяет C2DM) — это служба push-уведомлений, которая работает в фоновом режиме на вашем телефоне. Он прослушивает сообщения, хранящиеся приложениями, использующими его, на серверах Google GCM (дополняется GsfProxy )
Чтобы это работало, ваше устройство должно быть зарегистрировано, чтобы приложения могли знать, для какой учетной записи Google они должны отправлять свои сообщения.
API местоположения сервисов Play
Maps API (v2): переводит вызовы Google Maps API в вызовы OpenScienceMap. Отображает карту благодаря библиотеке, разработанной в рамках проекта OpenScienceMap.
Требования :
Ваше чистое ПЗУ AOSP должно поддерживать подделку подписи пакета µg . Это относится к Omnirom ( https://gerrit.omnirom.org/#/c/8672/ + https://gerrit.omnirom.org/#/c/13136/ ) и скоро появится в Cyanogenmod ( http: //review.cyanogenmod.org/#/c/106162/ ).
В качестве альтернативы FakeGApps с модулем Xposed.
ПЗУ 4.4+ без GAPPS
Скачать:
Свежие сборки доступны здесь: http://files.brnmod.rocks/apps/GmsCore/Latest/ . Получите 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. как root и введите это:# am broadcast -a android.provider.Telephony.SECRET_CODE -d android_secret_code://2432546
Или... вы можете просто убить/перезапустить процесс µg GmsCore. Монитор ОС может помочь вам в этом.
Получение приложений из «Play Store»
Существует множество решений для получения приложений (APK) без установки Google Play Store. Однако большинство из них полагаются на альтернативные рынки, или вам нужно получить APK-файлы из программы, установленной на вашем компьютере. Даже родной плеймаркет до сих пор работает (пользуюсь без проблем) как вариант есть блэкстор.
Код: 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 должен быть установлен как системное приложение.
Примечания:
Как предположил Иззи в комментариях, это один из самых простых способов реализовать сервисы Google Play с открытым исходным кодом, и он работает безупречно.
Я хотел бы выразить искреннюю благодарность Иззи за то, что он позволил мне включить эту обновленную информацию об этом новом проекте, перенесенном из NoGApps, и со ссылкой на его материал.
использованная литература
В соответствии с явным запросом ОП, вот мой ответ - с ограничением отсутствующего опыта.
У меня нет личного опыта в следующем. Это просто какое-то время в моем списке «что попробовать», поэтому я проверил только детали.
NOGAPPS , судя по описанию, именно то, что вам нужно. Проект направлен на предоставление Android API с точно таким же интерфейсом, как и у Google Services Framework (GSF), с той разницей, что они используют другие сервисы в качестве серверных частей. Эти сервисы действительно являются открытым исходным кодом, а не проприетарными, поэтому код можно свободно исследовать и установить уровень доверия.
Части проекта:
Не используется, но в работе:
Несмотря на использование других серверных частей, NOGAPPS представляет тот же интерфейс. Таким образом, приложения, использующие для работы какой-либо проприетарный код Google, должны не замечать этого, а прозрачно использовать предлагаемые подвески с открытым исходным кодом. Конечно, только когда он доступен (например, LoginService все еще недоступен, поэтому он не может работать). Я понятия не имею, существуют ли «фиктивные интерфейсы» для еще не завершенных вещей (чтобы заставить приложения думать, например, что LoginService есть, но в настоящее время нет доступа к серверу — поэтому они не падают, а просто не имеют соответствующего функциональность).
Для меня это звучит как блестящая вещь. И если бы я знал немного раньше (до того, как перепрошил свое последнее устройство), я бы попробовал это вместо GApps :)
Для получения дополнительной информации, сведений о текущей разработке и т. д. см. связанную страницу XDA проекта NOGAPPS .
Иззи
Бобсон
Как мы понимаем больше
Николя Рауль