Все в порядке, но.
Этот текст мало кто будет читать и мы можем написать здесь все, что угодно, например.
Вы живете в неведении. Роботы уже вторглись в нашу жизнь и быстро захватывают мир, но мы встали на светлый путь и боремся за выживание человечества. А если серьезно, то.
В целях обеспечения безопасности сайта от кибератак нам необходимо убедиться, что вы человек. Если данная страница выводится вам часто, есть вероятность, что ваш компьютер заражен или вы используете для доступа IP адрес зараженных компьютеров.
Если это ваш частный компьютер и вы пытаетесь зайти на сайт, например, из дома — мы рекомендуем вам проверить ваш компьютер на наличие вирусов.
Если вы пытаетесь зайти на сайт, например, с работы или открытых сетей — вам необходимо обратиться с системному администратору и сообщить, что о возможном заражении компьютеров в вашей сети.
- © 2005-2023, «4PDA». 4PDA® — зарегистрированный товарный знак.
Почти unGoogled Android

Раз уж астрологи объявили месяц статей про прошивки для Android без гугловых сервисов, поделюсь и я своим опытом. Чтобы предвосхитить возможные вопросы к статье, сразу хочу сказать какие именно цели я преследовал при перепрошивке, а где приходилось срезать углы.
Желаемые (основные) цели:
- Избежать vendor lock-а.
- Не хранить все яйца в одной корзине.
- Свобода внутри своего устройства.
- Использовать приложения с открытым исходным кодом.
- Возможностью хостить данные на своих мощностях.
- Не убирать возможность пользоваться проприетарным ПО.
- Иметь возможность ограничивать приложения в доступе к данным.
- Увеличить время жизни устройства от подзарядки до подзарядки.
Цели, к которым я не стремился (но некоторые частично достигнуты за счёт предыдущих):
- Приватность и анонимизация.
- Блокировка слежки.
- Шифрование везде и во всём.
Я не считаю что достиг максимума в основных целях, но я осознаю “срезанные углы”, и получившийся результат меня более чем устраивает.
Немного подробней про каждую цель.
Избежать vendor lock-а — чтобы внезапно не потерять доступ ко всему, только потому что какой-то ИИ (или не ИИ) меня решил заблочить. Я осознаю что вероятность этого весьма мала, но в прошлом у меня был негативный опыт подобного характера, и я бы не хотел его повторения со своим личным телефоном.
Не хранить все яйца в одной корзине — полностью избежать vendor lock-а не получится, абсурдный пример — при полностью своём софте, и серверах у себя в квартире, всё равно есть lock на электрика, который в самый неподходящий момент может отключить электричество. Так что вторая цель — попытка баланса между хранением разных данных в разных местах, и преодолением неудобств от этого.
Свобода внутри своего устройства — тут подразумевается рут, а так же дополнительные надстройки к нему.
Использовать приложения с открытым исходным кодом, а также с возможностью хостить данные на своих мощностях — я уже давно большой поклонник решений с отрытым кодом. Осознаю, что я не буду изучать код каждого на предмет закладок, и более того, я не буду их лично компилировать, а предпочту скачивание, скажем, с F-Droid (где какой-нибудь злой гений мог бы внедрять закладки при сборке). Тем не менее, у меня на душе светлей от использования OSS-приложений, а ещё в прошлом я, бывало, пересобирал какие-то приложения с изменениями необходимыми лично мне.
Возможностью хостить данные на своих мощностях — это продолжение избегания vendor lock-а. Если софт предполагает хранение данных вне устройства, то хотелось бы чтоб эти данные хранились либо у меня на сервере, либо, на крайний случай, была возможность выгрузки данных в неком читаемом формате.
Не убирать возможность пользоваться проприетарным ПО — приятнось для души это одно, а работа и жизнь — это другое. Я не Столлман, и не готов настолько радикально сменить работу, банк, страну и многое другое, чтобы была возможность пользоваться исключительно OSS-софтом. Достаточно часто приходится пользоваться проприетарным ПО.
Иметь возможность ограничивать приложения в доступе у данным — в Android всегда был механизм permissions, а так же уже достаточно давно runtime permissions, где приложения могут в рантайме запрашивать необходимые им доступы. Но этим часто злоупотребляют, и приложение может просто отказаться запускаться если не предоставить все необходимые доступы. Хотелось бы, скажем, дать доступ к контактам, но к фейковым.
Увеличить время жизни устройства от подзарядки до подзарядки — без комментариев.
Анонимизация, блокировка слежки и шифрование везде и во всём — по этим пунктам отвечу старым добрым комиксом. Если кто-нибудь, ну вдруг, получит доступ ко всем моим данным, то будет обидно, досадно, но моя жизнь глобально не ухудшиться. А если государство захочет меня нагнуть, то ему для этого достаточно лишь собственного желания.
Выбор ОС и телефона
Будучи разработчиком под Android для меня выбор ОС был прост (хотя изначально я немного думал в сторону Sailfish OS). В качестве форка я выбирал между LineageOS и /e/.
Ранее у меня уже был положительный установки и использования CyanogenMod и LineageOS, а /e/ базируется на LineageOS. У /e/ есть некоторое преимущество в виде microG искаропки, но и у microG есть собственные билды LineageOS.
- LineageOS — свободный (как в понятии “free as freedom” так и в понятии “free as beer”) форк Android. От AOSP отличается готовыми сборками под большое количество устройств и некоторыми дополнительными “плюшками” (улучшенный рабочий стол, твики в настройках).
- microG — свободная (open source) реимплементация некоторых частей GSF (Google Services Framework). Особая ценность для пользователя в том, что microG добавляет поддержку PUSH-уведомлений, которые отправляются по механизму GCM.
- /e/ — если LineageOS представляет собой просто улучшенный AOSP без экосистемы, то /e/ предоставляет экосистему в виде /e/ account-а, email-хостинга, магазина приложений, карт, а так же предоставляет улучшенные основные приложения (т.к. я сам /e/ не устанавливал, то возможны неточности).
Для помощи себе в выборе телефона, я написал небольшой скрипт, который скачивает список устройств, для которых есть LineageOS, проверяет наличие /e/ и microG для этого устройства, парсит onliner и 4pda на предмет даты выхода устройства и максимальной доступной версии Android под неё у производителя и затем выводит список, отсортированный по “привлекательности” устройства (код не ахти какой, по этому вместо нормального репозитария выложил в gist).
- хотя microG теоретически может устанавливаться на любой форк Android-а, на LineageOS её сходу установить нельзя, т.к. мейнтейнеры LineageOS не хотят добавлять в апстрим небольшой патч, который необходим для корректной работы microG. Того патча, там, буквально несколько строчек, но придётся пересобрать LineageOS самостоятельно. К счастью, мейнтейнеры microG предоставляют свои сборки LineageOS уже с патчем, с самим microG а так же с предустановленным F-Droid.
- F-Droid — так называется и репозитарий свободного ПО для Android, и приложение-магазин, которая позволяет их из этого репозитария скачивать и устанавливать.
Взяв десяток устройств из верхушки списка, я добавил их в сравнение на онлайнере (не сочтите за рекламу, как мне кажется там действительно удобное сравнение), и выбрал наиболее подходящий для меня вариант. Несмотря на предубеждение у телефонам из поднебесной, это оказался Xiaomi Mi 8.
Использую этот телефон уже пол года, и каких-либо нареканий кроме слишком большого размера экрана у меня к нему нет. Но ни в коем случае на нём не настаиваю, тем более что у вас могут быть другие предпочтения, да и за эти пол года появилось больше моделей с поддержкой LineageOS.
Для этого телефона доступно как LineageOS for microG так и /e/, но я отдал предпочтение более чистому Android-у (LineageOS for microG).
Установка
Детально описывать установку я не буду, т.к. во-первых это было уже давно и я мог что-то подзабыть, а во-вторых вы можете выбрать другое устройство. Поэтому, лучше найдите ветку форума про интересующий вас телефон на 4pda — там будут более чем подробные инструкции и отзывчивое community.
Но чтоб не оставлять раздел совсем пустым, вот что вспомнилось про установку для моего телефона:
- Разблокировать загрузчик по инструкции с 4pda.
- Обновить официальную прошивку (MIUI) до версии Android, соответствующей той, которую будете прошивать (осторожно, версии самого MIUI и Android на котором он базируется не совпадают). Кажется что виртуалка с Windows не понадобилась, но точно не помню.
- Установить TWRP по инструкции с 4pda (там под Windows, но bat-ники очень простые, и можно всё сделать в любой OS).
- Устанавливаем LineageOS по инструкции с 4dpa, но только без OpenGApps. Хоть название намекает на открытость, но открыт там лишь код, который устанавливает GSF, а сами GSF как были проприетарными и под контролем у Google, так и остаются.
- Устанавливаем Magisk, и перезагружаем устройство.
- MIUI — форк Android-а использующийся с телефонах Xiaomi (а так же в некоторых других благодаря кастомным прошивкам). Отличается красивым внешним видом и обилием рекламы прямо в прошивке (sic).
- TWRP — Team Win Recovery Project, кастомное рекавери для андроид, с широкими возможностями и управлением тачем (в отличие от некоторых других, где управление производится кнопками громкости).
- Magisk — systemless root для Android (не требуется модификации никаких файлов в разделе system). Так же Magisk предоставляет API для плагинов, которые реализуют и другие (кроме root) вещи.
Сразу после перепрошивки и перезагрузки, нужно установить несколько важных приложений. Большинство из них находится в основном репозитории F-Droid, но некоторые в дополнительных (список других популярных репозиториев можно взять из приложения Aurora Droid).
Magisk Manager
Если он не был установлен сразу, нужно установить. Далее через него нужно включить Magisk Hide а так же переименовать имя пакета и название launcher-а — это позволит более чем успешно скрывать наличие рута на устройстве. Только учтите, что Magisk Hide не применяется автоматически, и его нужно включать индивидуально для нужных приложений.
Вопросом прохождения успешной аттестации SafetyNet я особо не занимался, т.к. пока что не сталкивался с таким приложением, где это было бы проблемой. Если такое будет, то либо попробую всё-таки настроить, либо подумаю над сменой приложения.
Google SafetyNet — механизм в GSF, который позволяет сторонним приложениям узнавать, насколько безопасно (по мнению Google) устройство, на котором работает приложение.
Есть два вида проверок — “basicIntegrity” и “ctsProfileMatch”. Первая из них не очень строгая, и отвечает на вопрос не “поддельное” ли (что бы это ни значило) устройство. Вторая более строгая, и успешно пройти её могут только устройства, которые прошли Android compatibility testing.
Чтобы пройти “ctsProfileMatch” на кастомной прошивке, нужно делать очень много странных вещей, и то, нет никаких гарантий.
Проверку “basicIntegrity” должно быть пройти проще (если верить многочисленным статьям), но в моём случае не проходит даже она 🙁
Из модулей я поставил “Riru (Riru — Core)” и “Riru — EdXposed” (сам по себе Xposed не работает на новых версиях Android, но это обходной путь через Magisk). Другие модули мне не пригодились, хотя выбор очень большой.
XPosed — фреймворк, который позволяет сторонним модулям внедряться в приложения, без необходимости модификации оных (XPosed внедряет себя в загрузчик приложений, позволяя на лету подменять классы и методы).
Для XPosed написаны тысячи (если не десятки или даже сотни тысяч) модулей, позволяющих кастомизировать Android до мельчайших деталей.
Через EdXposed я установил “App Locale 2” для принудительной смены языка в приложениях (я предпочитаю интерфейс телефона и большинства приложений на английском, но некоторые приложения хочу видеть на русском. К сожалению, не все предоставляют такую возможность в настройках (например, Яндекс Деньги), так что приходится действовать обходным путём.
Ещё я установил модуль “XPrivacyLua” для подсовывания фейковых данных особо любопытным приложениям, которые не запускаются если не разрешить пермишен, который бы мне не хотелось бы давать.
FoxyDroid, Aurora Droid
Сразу в системе будет установлен F-Droid (при условии установки LineageOS for microG). Мне приложение не кажется ни особо быстрым, ни особо удобным, по этому я дополнительно устанавливаю FoxyDroid и Aurora Droid.
FoxyDroid — быстрый и минималистичный магазин приложений. Aurora Droid очень красив, но местами глючноват. Из хорошего — там сразу есть список дополнительных репозиториев с OSS-программами. Я некоторые из них переношу в FoxyDroid (Bromite, IzzyOnDroid, microG), а сам Aurora Droid потом удаляю (но ни в коем случае не призываю делать точно так же).
Aurora Store
Полностью отказаться от магазина Google Play я пока не готов, по этому использую Aurora Store для скачки приложений оттуда. Там можно войти под своим аккаунтом, и получить доступ к купленным приложениям (внутри самого Aurora Store покупать нельзя, так что покупайте через Web либо с другого устройства). Осознаю что за использование своего аккаунта вне самого Google Play меня могут безвозбранно забанить, но я иду на этот риск.
Apple UnifiedNpl Backend, Deja Vu Location Service
Сам по себе microG не умеет определять координаты без GPS, но делегирует эту задачу сторонним приложениям через механизм UnifiedNlp. Сразу в прошивке уже есть Mozilla UnifiedNpl Backend, но по крайней мере в моём городе он не особо точен, по этому я устанавливаю дополнительные.
Apple Unified Nlp Backend — может показаться что это “шило на мыло” (зачем избавляться от слежки Google, если будет слежка от Apple), но как я писал вначале статьи, цели приватности я не преследовал, а OSS-приложений с названием похожим на “Google Unified Nlp Backend” я не нашёл.
Deja Vu Location Service — приложение ведёт локальную базу местоположений и их соответствия WiFi-точкам и мобильным вышкам. Через некоторое время использования, позиция без GPS будет определяться в тех местах, где вы часто бываете.
Flite TTS Engine
Синтезатор речи. Умеет только английский язык. Сразу после установки нужно скачать необходимые голосовые данные и настройть их. Хочу предупредить, что иногда кажется, что настройки не применяются. Тогда нужно “смахнуть” приложение, и открыть заново.
DAVx5
Это приложение служит для того, чтобы была возможность синхронизации контактов и календарей по протоколам CardDAV и CalDAV. Для календарей (и почты) я пользуюсь Fastmail, и там всё достаточно тривиально. Контакты же мои всё ещё в Google, и настроить DAVx5 для синхронизации контактов оттуда немного замороченно.
Адрес будет https://www.googleapis.com/carddav/v1/principals//lists/default/, а вот с паролем хитрее. Т.к. DAVx5 не умеет гугловскую авторизацию, а гугл больше не поддерживает вход по логину и паролю, придётся сделать специальный пароль для приложений.
В процессе создания пароля придётся включить 2-step verification, и для этого пригодится следующая программа.
Authenticator Pro
Это приложения для герерации кодов для двухфакторной авторизации. Альтернативно можно установить Google Authenticator, но тот который в F-Droid уже устарел (хотя и работает), а новый уже не open source.
Немного других приложений
Остальные приложения вы смело можете заменять на свой вкус, но мне нравятся именно эти:
- QKSMS — отличная программа для СМС.
- Simple Calendar — AOSP-календарь для меня не очень удобен, а вот Simple Calendar самое то — красивый, функциональный, но не перегруженный (не хватает только возможности задавать цвет для события в рамках одного календаря).
- Binary Eye — сканнер штрих- и бар-кодов.
- Fennec F-Droid — мой основной браузер.
- Bromite — если для просмотра какого-нибудь сайта нужен браузер на основе Chroimum. К слову, команда Bromite так же предоставляет билды чистого Chromium-а.
- LibreOffice Viewer — просмотрщик документов.
- Librera PRO — читалка книг (дизайн немного инопланетный, но программа очень функциональная).
- MuPDF viewer — минималистичный просмотрщик pdf. В F-Droid есть несколько вариантой MuPDF, но именно этот более-менее работает на последних версиях Android, и в котором есть хоть какие-то приятные анимации.
- NewPipe, SkyTube — замена приложению YouTube.
- OsmAnd — на мой вкус самые функциональные offline-карты на базе open street maps.
- Telegram FOSS — просто чтоб вы знали, что есть отдельная OSS-сборка. Там есть нюанс с настройкой уведомлений (в OSS-версии не используются уведомления через GCM), и постоянно будет висеть нотификашка, но по тапу на неё в самом телеграме будут инструкции как её скрыть.
- Tasks — я всё ещё не перешёл на него (пользуюсь проприетарным Todoist), но выглядит многобещающе, и умеет синхронизироваться с CalDAV-сервером (с Fastmail работает).
- Warden — приложение, которое сканирует установленные приложения, и прогоняет их по разным базам, после чего выводит трекеры и логгеры, которые внедрены в приложение. Не могу сказать что я им пользуюсь по делу (например, не пользуюсь приложениями, если в них много трекеров), но бывает интересно просмотреть какие приложения больше собирают инфы, а какие — меньше.
Это далеко не весь список моих приложений установленных из F-Droid и других свободных репозиториев, но остальные мне показались очень спецефичными, по этому я не стал их упоминать, как и приложения установленные из Google Play (тут у каждого будет свой набор любимых приложений).
Единственное, чего я не нашёл в Open Source, так это достойного почтового клиента, который умеет много email-аккаунтов, поддерживает Google-аутентификацию, не перенаправляет все письма на какие-то странные сервера, умеет unified inbox и прилично выглядит. K9-Mail мне неудобен, FairEmail выглядит интересно, но я пока не готов врываться в настройку (кроме того в OSS-версии недоступно много функций). По этому я продолжаю пользоваться проприетарным и платным приложением AquaMail (не сочтите за рекламу), но с радостью приму советы по смене приложения.
Итоги
Даже несмотря на то, что большинство желаемых целей было достингуто не на 100%, результатом я всё равно очень доволен, и возвращаться на прошивку с GSF или вообще на прошивку от вендора нет никакого желания. Подробней по каждой цели:
- Избежать vendor lock-а и не хранить все яйца в одной корзине — в какой-то мере удалось. Телефон теперь принадлежит мне (если не рассматривать возможные закладки в драйверах), а данные разнесены по разным провайдерам.
- Свобода внутри своего устройства — да, есть полноценный рут, мощное рекавери и много модулей для Magick и XPosed, что позволяет исследовать устройство, и изменять его поведение.
- Использовать приложения с открытым исходным кодом — частично удалось. Многие OSS-приложения ничуть не хуже, или даже лучше своих проприетарных аналогов (для моих сценариев использования), но для некоторых проприетарных приложений не удалось найти адекватную замену (Evernote, Pocket), а некоторые никогда не будут в OSS (приложения для банкинга). Ещё местами есть проблема, когда приложение open source, но билд, который есть в F-Droid либо устарел по сравнению с билдом в Google Play, либо не работает (привет, Rocket.Chat).
- Возможностью хостить данные на своих мощностях — частично удалось, и потенциально можно перенести ещё больше информации к себе. Почта, календари, контакты, задачи — всё это можно хостить либо вообще на своём сервере, либо выбрать провайдера себе по вкусу. Так же можно огранизовать свои сервера для некоторых чатов и мессенджеров. Но из-за специфики рабочих процессов что-то остаётся проприетарным (скажем, не получается перейти с Google Docs на OwnCloud или NextCloud).
- Не убирать возможность пользоваться проприетарным ПО — всё хорошо, можно без проблем устанавливать приложения из Google Play, в том числе и когда-либо купленные. Но вот что касается возможности покупать приложения на самом устройстве, либо пользоваться in-app покупками, то тут не всё так однозначно. Чтобы покупать, нужно иметь какое-либо другое устройство с установленным GSF — тогда можно будет покупать либо с этого устройства, либо через Web. С in-app-ами хуже, т.к. если статус покупки / подписки не хранится на сервере, то при оплате in-app-а на дополнительном устройстве, он не появится на вашем основном. Хотя с приложениями, которыми я пользуюсь (Todoist, Evernote, Яндекс.Музыка) всё хорошо.
- Иметь возможность ограничивать приложения в доступе к данным — да, это возможно через модули к XPosed.
- Увеличить время жизни устройства от подзарядки до подзарядки — это получилось, и да, это случилось после замены GSF на microG. Читал статьи, где авторы утверждают что GSF сами по себе отжирают совсем немного батареи, а вся вина на приложениях, которые часто получают пуши и / или “просыпаются” в фоне. Так вот, приложений у меня установлено очень много, большинство из них пользуются пушами через GCM, а некоторые и вовсе держат своё соединение. И несмотря на то, что я достаточно активно пользуюсь телефоном, заряжаю я его раз в несколько дней. Если хочется большего, то в настройках microG можно увеличить интервал проверки пушей, тогда батарея будет тратиться ещё меньше (но ценой того, что пуш-нотификация может прийти со значительно задержкой).
- Информационная безопасность
- Open source
- Смартфоны
GmsCore — что это за программа на Андроид?

Приветствую. Сегодня почти каждый смартфон работает на базе Android. И многие пользователи хотели бы, чтобы он долго работал без подзарядки. Но по факту — некоторые приложения могут агрессивно расходовать батарею. Одно дело, когда такое приложение можно спокойно удалить, другое — системное, например Google Apps.
GmsCore — что это такое?
GmsCore и GsfProxy — основные компоненты открытой реализации Google Apps (gapps) — microG Services Core. Обеспечивают работу push-уведомлений, API геолокации в использующих приложениях.
В целом microG состоит из:
- GmsCore (Service Core) — получение доступа к Google Play Services или Google Maps Android API.
- GsfProxy (Services Framework Proxy) — позволяет программам использовать Google Cloud Messaging для решения проблем отсутствующих уведомлений.
- UnifiedNlp (Unified Network Location Provider) — восстанавливает доступ к геолокации через беспроводную сеть Wi-Fi.
- mapsv1 (Maps API) — улучшает функционирование карт.
- Phonesky (Store) — поддержка обновлений программ через Play Маркет.
Модули независимы, установка производится отдельно. Не является полноценной заменой Google Play Services, необходимо только для восстановления неработающих механизмов в среде Android.
Для нормальной работы GmsCore требуются разрешения для доступа к местоположению в диалоге Self-Check.
Диалоговое окно Self-Check:

Расположение файла GsmCore.apk:

Смысл microG
Компоненты заменяют сервисы Google, однако при этом отсутствуют вся аналитика, отправка данных без ведома юзера, рекламные идентификаторы, не забивает оперативную память, не нагружает процессор. Но главный плюс — сервисы microG почти не расходуют батарею телефона. При использовании приложений, при постоянном коннекте с интернетом аккумулятор расходуется не более 2%.
Однако есть и минусы — работа приложений, привязанных к сервисам Гугла бывает нестабильной, отсутствуют сервисы Play игр, бывают сбои.
Заключение
- GmsCore — часть пакета microG Services Core, который частично может заменить оригинальные сервисы Google Apps.
- microG используется как оптимизация работы смартфона, при этом расход батареи снижается. Однако на данный момент не является абсолютно стабильным решением.
- Без необходимости GmsCore не стоит удалять/морозить.
Saved searches
Use saved searches to filter your results more quickly
Cancel Create saved search
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Alternative network location provider for Android, with plugin interface to easily integrate third-party location providers.
microg/UnifiedNlp
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
- Local
- Codespaces
HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Latest commit message
Commit time
January 24, 2022 17:01
June 5, 2020 20:51
April 24, 2022 14:39
June 5, 2020 20:52
January 18, 2022 13:46
January 18, 2022 13:46
June 5, 2020 20:51
January 21, 2022 22:41
April 20, 2022 20:58
April 20, 2022 20:58
January 18, 2022 13:46
June 5, 2020 21:58
January 18, 2022 13:46
August 1, 2022 09:50
August 1, 2022 09:55
June 5, 2020 21:58
August 1, 2022 09:52
January 18, 2022 13:46
June 5, 2020 20:52
January 18, 2022 13:43
January 18, 2022 13:43
January 18, 2022 13:46
README.md
Unified Network Location Provider
The next generation Network Location Provider, based on plugins. Usually abbreviated as UnifiedNlp.

Installation
Release builds may be found on the release page.
Unified Network Location Provider is provided in 3 variants:
- NetworkLocation.apk – for the usual configuration of Android 4.4+ without GApps
- LegacyNetworkLocation.apk – for the usual configuration of Android 2.3 — 4.3.1 without GApps
- UnifiedNlp.apk – for Android WITH Gapps
Keep in mind that:
- All three variants are available on F-Droid as well, but they use different apk names (have a look at app description on F-Droid to check which version to use).
- There is another repo containing the deprecated version of NetworkLocation.apk without the plug-in system.
- microG GmsCore project already includes the Unified Network Location Provider.
Android 4.4 — 7.1.1 (KitKat / Lollipop / Marshmallow / Nougat)
Most modern ROMs come with support for non-Google geolocation providers. On these systems installation is easy:
- Make sure that no Google geolocation tool is installed (it is usually listed as Google Play Services in Apps)
- Download and install NetworkLocation.apk as a usual app (you may need to enable «Unknown sources» in Settings->Security)
- Reboot and continue at Usage
Some ROMs, especially those not based on AOSP might have problems using this method. However, if your system has root, you can try installing the hard way:
- Download NetworkLocation.apk
- Mount /system read-write (from your PC, call adb root && adb remount )
- Copy NetworkLocation.apk to /system/priv-app (from your PC, call adb push NetworkLocation.apk /system/priv-app/NetworkLocation.apk )
- Reboot (from you PC, call adb reboot ) and continue at Usage
Note: On Android 7 (or later) an additional patch is needed to make it working, or alternatively, you can install it in /system/priv-app as explained above.
Android 2.3 — 4.3.1 (Gingerbread / Honeycomb / Ice Cream Sandwich / Jelly Bean)
Older Android versions are no longer officially supported. However I still provide a legacy build, that should be compatible with those systems. It is required to have a rooted system to install on Jelly Bean and older.
- Download LegacyNetworkLocation.apk
- Mount /system read-write (from your PC, call adb root && adb remount )
- Copy LegacyNetworkLocation.apk to /system/app (from your PC, call adb push LegacyNetworkLocation.apk /system/app/LegacyNetworkLocation.apk )
- Reboot (from you PC, call adb reboot ) and continue at Usage
Usage
UnifiedNlp alone does not provide any features, but acts as a middleware for multiple backends. Most of them can be downloaded and updated using F-Droid. Here is a list of backends known to me.
List of backends for geolocation:
- AppleWifiNlpBackend — Uses Apple’s service to resolve Wi-Fi locations. It has excellent coverage but the database is proprietary.
- OpenWlanMapNlpBackend — Uses OpenWlanMap.org to resolve user location but the NLP backend did not reach release-quality, yet. Users interested in a freely licensed and downloadable database for offline use should stick with openBmap for now — Last updated in 2015
- OpenBmapNlpBackend — Uses openBmap to resolve user location. Community-created, freely licensed database that can optionally be downloaded for offline operation. The coverage varies from country to country (it’s best in central Europe).
- MozillaNlpBackend — Uses the Mozilla Location Service to resolve user location. The coverage is OK. Only the cell tower database is free.
- LocalWifiNlpBackend — Local location provider for Wi-Fi APs using on-phone generated database.
- LocalGSMLocationProvider — Local opencellid based location provider backend. Has been surpassed by LocalGSMBackend which also has an OpenCellID option — Last update in 2014
- LocalGSMBackend — Local location provider for GSM cells. It works offline by downloading freely licensed database files from Mozilla, OpenCellID, or lacells.db.
List of backends for (reverse) geocoding:
- NominatimGeocoderBackend — Address lookup backend.
(. ) Create issue or pull request to extend either list 🙂
After installing a backend, you can use UnifiedNlp by activating network-based geolocation in Settings->Location. Since KitKat, you need to select any mode but «device only», on older Android version this setting is called «Wi-Fi & mobile network location» (ignore any misleading texts saying this is for Google’s location service, you don’t have Google’s service installed but UnifiedNlp )
Backend development
The API is available here. Documentation may be found in the README provided with the API.
You might also take a look into existing backends, to see how they work out.
Building
UnifiedNlp can be easily built using Gradle.
git clone https://github.com/microg/UnifiedNlp cd UnifiedNlp ./gradlew build
Attribution
Some components: Copyright (C) 2013 The Android Open Source Project
compat -folder is extracted from different AOSP versions for cross-version compatibility
License
Copyright (C) 2013-2022 microG Project Team Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
About
Alternative network location provider for Android, with plugin interface to easily integrate third-party location providers.