2
0
mirror of https://gitlab.com/Nanolx/NanoDroid synced 2024-10-31 09:20:23 +00:00
Go to file
2020-09-01 21:40:12 +02:00
BromiteWebView bump version to 22.7.20200829 (The Velvet Machine) 2020-08-29 21:54:17 +02:00
data build-package: also increase version number/bump module version for Patcher Magisk Module 2020-08-28 22:35:01 +02:00
doc improve docs 2020-08-19 08:57:07 +02:00
FDroid bump version to 22.7.20200829 (The Velvet Machine) 2020-08-29 21:54:17 +02:00
Full CommonInstaller: add android.permission.ACCESS_BACKGROUND_LOCATION to default-permission on SDK 29+ 2020-09-01 21:35:15 +02:00
Google bump version to 22.7.20200829 (The Velvet Machine) 2020-08-29 21:54:17 +02:00
microG bump version to 22.7.20200829 (The Velvet Machine) 2020-08-29 21:54:17 +02:00
OsmAnd bump version to 22.7.20200829 (The Velvet Machine) 2020-08-29 21:54:17 +02:00
patcher bump version to 22.7.20200829 (The Velvet Machine) 2020-08-29 21:54:17 +02:00
SetupWizard SetupWizard: fix crash due to malformed aroma-config 2020-09-01 21:09:15 +02:00
systest bump version to 22.7.20200829 (The Velvet Machine) 2020-08-29 21:54:17 +02:00
tools tools: update vdexExtractor 0.6.0+git20200513 2020-08-16 10:05:48 +02:00
uninstaller bump version to 22.7.20200829 (The Velvet Machine) 2020-08-29 21:54:17 +02:00
.gitignore microG package: add missing files 2020-04-18 15:30:38 +02:00
build-package bump version to 22.7.20200829 (The Velvet Machine) 2020-08-29 21:54:17 +02:00
ChangeLog.md bump version to 22.7.20200829 (The Velvet Machine) 2020-08-29 21:54:17 +02:00
CommonAddon bump version to 22.7.20200829 (The Velvet Machine) 2020-08-29 21:54:17 +02:00
CommonInstaller CommonInstaller: make nanodroid_init setup variable actually work 2020-09-01 21:40:12 +02:00
LICENSE Initial commit 2018-01-23 21:11:52 +01:00
README.md bump version to 22.7.20200829 (The Velvet Machine) 2020-08-29 21:54:17 +02:00

NanoDroid

NanoDroid is a installer for various OpenSource related things, most noticably microG and F-Droid. It supports direct /system installation, both devices with or without A/B partition scheme, aswell as Magisk Mode (module) installation. It also includes several tools (eg. GNU Bash, tools from util-linux/bsdmainutils and more), scripts and additional features (system debloating, init scripts, automatic logcat creation), aswell as a companion F-Droid Repository.

Furthermore it allows the user to do fine-graded installations using configuration files, which allow to choose what to install, or if several alternatives are available, which of them, see Alter Installation below.

In order for full microG experience NanoDroid contains a modified Play Store which allows (in-)app-purchases with microG, which would normally not be possible. It also tries to remove all previously installed GApps on it's own. For ROMs without builtin signature spoofing support NanoDroid includes an on-device Patcher which tries to patch your ROM from TWRP.

Versions until 15.1 were called NanoMod, starting with 16.0 they're called NanoDroid.

Table of Contents

Created by gh-md-toc

Current Release

Downloads

Primary Mirror

On Nanolx the latest stable and current beta releases are available, no previous releases.

Archive Mirror

On AndroidFileHost all stable releases are available.

SHA256 Checksum and GPG Signature

Since version 18.3.1 all releases hosted on nanolx.org contain a SHA256 checksum and GPG signature to check their validity. AFH does provide the SHA256 checksum on the downloads summary page, but does not allow to upload a GPG signature.

You can obtain the public part of my GPG key from:

  • download the public key from photonic.asc
    • import it using gpg --import photonic.asc
  • download and import using gpg from pgp.mit.edu:
    • gpg --keyserver pgp.mit.edu --recv B0ABCE622A077B584B81339E340FD70EFFC52B26

You can verify the checksum and signature like:

gpg --verify NanoDroid-19.0.20181027.zip.sha256.sig
sha256sum -c NanoDroid-19.0.20181027.zip.sha256

Additionally you may want to ensure the signing date is close to the release date.

Snapshots

You can create snapshots from this repository.

  • on GNU/Linux, MacOS or *BSD clone this repository and use the provided build-package script like
    • download required files:
      • build-package pull to download all required apks and libraries for the Full, microG and F-Droid packages
    • build packages:
      • build-package full to create the Full package
      • build-package microg to create the microG only package
      • build-package fdroid to create the F-Droid only package
      • build-package patcher to create the on-device framework-patcher package
      • build-package uninstaller to create the uninstaller package
      • build-package setupwizard to create the Setup Wizard package
      • build-package bromitewebview to create the Bromite WebView package
      • build-package osmand for the OpenStreetMap (OsmAnd) package
      • build-package systest to create the SysTest package
      • build-package google to create the Google (Sync Adapters & Swipe libraries) package
      • build-package all to create all packages at once
    • update required files:
      • build-package u-microg to update microG
      • build-package u-fdroid to update F-Droid
      • build-package u-apps to update (most) applications
      • build-package u-swipe to update swipe libraries
      • build-package u-gsync to update Google Sync Adapters
      • build-package u-bromite to update Bromite WebView
      • build-package u-osmand to update OpenStreetMap (OsmAnd)
      • build-package u-patch to update Haystack patches
      • build-package pull to update/re-download everything

for apks downloaded from F-Droid repositories or from APK Mirror, build-package checks the SHA256 hash.

The build-package script additionally supports the following parameters:

  • check check if all files were properly downloaded
  • report create a package report
  • clean remove any untracked files from the repo (e. g. from build-package pull)
  • dalvik [.jar] prepare a jar file for use with DalvikVM (requires Android SDK)
  • ver [version] [date] change project version
  • bump increment Magisk module version by 1

"Secret" parameters

export BP_DEBUG=1 allows seeing debug messages when repos are fetched and APKs are downloaded

export BP_USE_WGET=1 tells the script to use wget for downloading indices and APks

Custom builds

The following applications are custom builds (see F-Droid Repository below):

See the documentation below for more information on those files and what they do.

Supported Android Versions

NanoDroid officially supports the following Android versions:

  • 4.4 / SDK 19 (KitKat)
    • System Mode only (Magisk does not support KitKat)
  • 5.0 / SDK 21 (Lollipop)
  • 5.1 / SDK 22 (Lollipop)
  • 6.0 / SDK 23 (Marshmallow)
  • 7.0 / SDK 24 (Nougat)
  • 7.1 / SDK 25 (Nougat)
  • 8.0 / SDK 26 (Oreo)
  • 8.1 / SDK 27 (Oreo)
  • 9.0 / SDK 28 (Pie)
  • 10.0 / SDK 29 (Q)

earlier versions will never officially be supported (you may still report bugs, though).

Future versions will be officially supported, eventually.

  • busybox by Osm0sis (highly recommended for all NanoDroid scripts properly working)
  • GNU Nano editor by Osm0sis (simple, powerful commandline editor)

Support

> XDA Support Thread

ChangeLog

Full, user-readible > ChangeLog

Summary

NanoDroid can be installed as a Magisk Module or directly to /system, most functionality is available, in System Mode, too.

More information about Magisk > XDA

NanoDroid includes

  • microG and it's companions
  • > F-Droid and it's privileged extension
    • alternatively you can install > Aurora Droid and it's services extension
  • modified Play Store to allow (in-)app-purchases with microG
    • this required the Play Store to be modified, see the > patch
    • alternatively > Aurora Store and it's services extension can be installed instead
  • custom init scripts
  • pseudo-debloat feature (Magisk Mode)
  • force-debloat feature (Sytem Mode)
    • moves applications out of the way to /data/media/0/nanodroid_backup/
    • pre-configured > default settings
  • several Open Source applications
  • on-device framework-patcher for microG support (signature spoofing)
    • with automatic de-odexing up to Android 8.1
  • additional components
    • GNU Bash shell
    • several utilities from util-linux, bsdmainutils and more
    • Addon.d support for System Mode installation
      • restores NanoDroid after ROM update
      • re-debloates GApps, if required

Packages

Modules

Module packages, flash through TWRP (starting with version 22.6.91 flashing through Magisk Manager is supported again).

  • NanoDroid: includes
    • everything mentioned in the Summary above
  • NanoDroid-microG: includes (only)
    • microG and it's companions
    • pseudo/force-debloat feature
    • app store(s)
    • GApps and location packages auto-removal
  • NanoDroid-fdroid: includes (only)
    • F-Droid and it's privileged extension
  • NanoDroid-BromiteWebView: includes (only)
  • NanoDroid-OsmAnd: includes (only)
  • NanoDroid-Google: includes (only)
    • Google Sync Adapters
    • Swipe libaries

Installation Logfiles

The recovery log and installation configuration is stored after installation, regardless with it succeeded or failed.

You'll find the files in

  • /data/media/0/nanodroid_logs/MODID_log_INSTALLDATE
  • /data/media/0/nanodroid_logs/MODID_twrp_INSTALLDATE

where MODID is either

  • NanoDroid
  • NanoDroid_microG
  • NanoDroid_FDroid
  • NanoDroid_BromiteWebView
  • NanoDroid_OsmAnd
  • NanoDroid_Google

and INSTALLDATE is the date of installation in %Y%m%D_%H.%M.%S format (eg: 20180709_20.34.14).

In case of installation errors, issues or questions provide theese files in your report for easier debugging.

Parallel Installations

Since the microG and F-Droid packages are subsets of the Full NanoDroid package, they can't be installed alongside.

The microG and F-Droid packages however can be installed in parallel, as they complement each other.

Extras

Extra packages, flashing through TWRP required (flashing through Magisk Manager is not supported).

  • NanoDroid-setupwizard: includes
    • AROMA based Setup Wizard to create the configuration files
    • user can choose where to store the configuration files
      • /data/media/0 (fallback)
      • /external_sd
      • /data
    • NOTE: AROMA only works on arm and arm64, if your device is x86 or x86_64, it won't work
  • NanoDroid-uninstaller: includes
    • uninstalls all NanoDroid Magisk Modules
    • uninstalls NanoDroid installed in System Mode
    • uninstalls NanoDroid-Patcher addon.d environment
    • restores GApps and location services auto-removed during installation (System Mode)
    • restores services.jar patched by NanoDroid-Patcher (System Mode)

Extra packages, flashing trough TWRP recommended, flashing through Magisk Manager is supported.

  • NanoDroid-systest: includes
    • system testing script which will create the logfile as /data/media/0/nanodroid_logs/NanoDroid-SysTest-TESTDATE.log
      • TESTDATE is the date of testrun in %Y%m%D_%H.%M.%S format (eg: 20180709_20.34.14).
    • the following data is collected:
      • device profile (ROM, manufacturer, device, ABI, builddate, security patch date)
      • detected LD_LIBRARY_PATH
      • DalvikVM binary and it's architecture
      • mounted partitions, whether device is A/B
      • list of installed GApps
      • file list of /system/app and /system/priv-app
      • whether the ROM has native signature spoofing support
      • whether the ROM supports Bromite WebView installations
    • use this to provide additional informations when posting issues
  • NanoDroid-patcher: includes
    • on-device framework-patcher for signature spoofing support
      • on Android up to 8.1 the Patcher will automatically deodex your services.jar
      • on Android 9 you need to manually deodex your services.jar
    • creates the file /data/adb/NanoDroid_Patched after successful patching
    • installs an addon.d script for automatic re-patching after ROM update
      • addon.d support files reside in /data/adb/nanodroid-patcher/

F-Droid Repository

In order to ease updating NanoDroid's custom application builds you can use it's companion F-Droid Repository

Details

NanoDroid

This lists features unique to NanoDroid.

NanoDroid-Overlay

The nanodroid-overlay script handles the debloat feature

  • pseudo-debloat applications in Magisk Mode
  • force-debloat applications in System Mode
  • show the list of debloated apps
  • show the list of non-debloated apps
  • add or remove apps from the list of debloated apps

Full details on the NanoDroid-Overlay Script > Details

NanoDroid-Prop

The nanodroid-prop script utilizes Magisk's resetprop to alter system properties

  • add system properties (Magisk-only)
    • both on-the-fly and permanently
  • properties set by this script survive NanoDroid updates

Full details on the NanoDroid-Prop Script > Details

NanoDroid-Perm

The nanodroid-perm script grants microG and Co. required permissions, if lacking

Full details on the NanoDroid-Perm Script > Details

NanoDroid-Util

The nanodroid-util script contains the following features

  • show boot count
  • fix OTA update issues (like non-working navbar)
  • handle Audio Focus permission
    • prevent apps from stealing audio output, for example listen to Music while playing Pokémon Go
  • handle Read Clipboard permission
  • modify Airplane Mode settings
    • choose which radios are on or off in Airplane mode

Full details on the NanoDroid-Util Script > Details

init scripts

The following init scripts are bundled with NanoDroid

  • external_sd
    • symlink SD Card mount point to /external_sd
    • SD Card needs to be inserted upon boot
  • fstrim
    • trim file systems (may increase speed)
  • logcat
    • store logcat in /data/adb/logcats
      • logs older than 7 days are deleted on every reboot
  • logscleaner
    • clean up system log files older than 7 days
  • sqlite
    • clean up sqlite databases

When in Magisk Mode the init scripts create their log files in

/magisk/NanoDroid/logs/${script}.log.${date}

When installed to /system your ROM needs to support running scripts in

/system/etc/init.d

or you can use Kernel Adiutor's init.d emulation.

Shell Utilities

Several utilities from bsdmainutils and util-linux are included:

> bsdmainutils Launchpad

  • column
  • hexdump
  • ncal

> util-linux GitHub

  • findfs
  • findmnt
  • lsblk
  • lscpu
  • lsipc
  • lslocks
  • lsns
  • whereis

Other shell utilities

GNU Bash and GNU Nano

NanoDroid includes GNU Bash shell.

microG

microG is an Open Source replacement for Google Services, full details can be found at the microG homepage > Website

NanoDroid includes microG as follows

  • microG GmsCore > GitHub
  • with optional Déjà Vu location provider backend > F-Droid
  • with optional Mozilla location provider backend > F-Droid
  • with optional Apple location provider backend > F-Droid
  • with optional Radiocells location provider backend > F-Droid
  • with Nominatim adress provider backend > F-Droid
  • with microG GsfProxy > GitHub
  • with microG DroidGuard Helper > GitHub
    • required for SafetyNet support
  • support for Maps API version 1
  • support for Google Calendar and Contacts Sync Adapter
    • disabled by default
  • optional Swipe libraries
    • disabled by default
  • choose between modified Play Store > APK Mirror or Aurora Store > F-Droid
    • Aurora Store can use system permissions to install packages, so you don't need to enable Unknown Sources
      • go to Aurora Store Settings > Installation Method > Using system permissions
    • Play Store is modified to allow (in-)app-purchases with microG
  • GApps and several location services conflict with microG and unified Nlp. Thus they are removed during NanoDroid installation

F-Droid

F-Droid > Website is an app store for OpenSource applications.

NanoDroid includes both F-Droid and it's Privileged Extension > F-Droid, so you don't need to enable Unknown Sources.

Furthermore NanoDroid tells F-Droid to activate the following additional repositories by default:

  • NanoDroid companion F-Droid repository > Link
  • BromiteWebView F-Droid repository > Link
  • official microG F-Droid repository > Link

Google Sync/Swipe Libraries

Google Sync adapters and Swipe Libraries are optionally installable through the NanoDroid-Google package.

Applications

NanoDroid includes a variety of OpenSource applications, check full > list

Installation

Alter Installation

NanoDroid supports altering the installation settings to a wide degree.

Full > Details on altering installation manually, or use the Setup Wizard (if you've got an arm/arm64 device).

Installation Process

NanoDroid

  • Use Setup Wizard to create configuration files (if you've got an arm/arm64 device), or create manually (see above)
  • Download pre-built zip or create one from this repository
Installing from scratch

This is the recommended way.

Stock ROM without GApps, custom ROM with/without OpenGApps

OpenGApps and GApps-less ROMs don't need further measurements, the Installer takes care of required steps.

  • perform full wipe (/system, /data, /cache, Dalvik/ART cache)
    • recommended, but not required
  • install desired ROM
    • make sure it does not include GApps if you want to use microG
      • NanoDroid tries to get rid of GApps on it's own, but it may not always work, try without any warranty
  • install Magisk
    • recommended, but not required
    • if Magisk is installed, NanoDroid will be installed as Magisk-Module, else it will install into /system directly
  • install desired Kernel (if any)
  • boot into ROM (for Magisk module installation only)
  • boot into TWRP again (for Magisk module installation only)
  • install NanoDroid
    • if you want to use microG make sure the ROM is either pre-patched with signature spoofing support or deoxeded so you can patch yourself see here
      • you can use the Patcher package to de-odex (up to Android 8.1) and/or patch services.jar (up to Android 9.0)
  • reboot into ROM
Stock ROM with GApps

Stock ROMs with GApps may not allow to switch from Google GmsCore to microG GmsCore in-place, thus the installation is slightly different.

  • perform full wipe (/system, /data, /cache, Dalvik/ART cache)
    • recommended, but not required
  • install desired ROM
    • make sure it does not include GApps if you want to use microG
      • NanoDroid tries to get rid of GApps on it's own, but it may not always work, try without any warranty
  • install Magisk
    • recommended, but not required
    • if Magisk is installed, NanoDroid will be installed as Magisk-Module, else it will install into /system directly
  • install desired Kernel (if any)
  • mount /system read-write and remove the following folders
    • GApps GmsCore (which can have multiple paths, depending on the ROM):
      • /system/priv-app/GmsCore
      • /system/priv-app/GmsCore_update
      • /system/priv-app/PrebuiltGmsCore
      • /system/priv-app/PrebuiltGmsCorePi
      • /system/priv-app/PrebuiltGmsCorePix
    • /system/priv-app/GoogleServicesFramework
    • /system/priv-app/Phonesky
  • boot into ROM (ignore all those complaints that Play Services are missing)
    • this is step is required!
  • reboot to TWRP
  • install NanoDroid
    • if you want to use microG make sure the ROM is either pre-patched with signature spoofing support or deoxeded so you can patch yourself see here
      • you can use the Patcher package to de-odex (up to Android 8.1) and/or patch services.jar (up to Android 9.0)
  • reboot into ROM
Upgrade / Installing on a clean ROM

When upgrading NanoDroid or installing on a known clean ROM (read: GApps free), you may also just

  • boot into TWRP
  • install Magisk
    • recommended, but not required
    • if Magisk is installed, NanoDroid will be installed as Magisk-Module, else it will install into /system directly
  • install NanoDroid
  • reboot

microG

Signature Spoofing Support

For microG to work, your ROM needs to have signature spoofing enabled (or a deodexed ROM to patch yourself).

If your ROM does not have signature spoofing support, you can manually patch it either

  • flashing the on-device Patcher zip
    • it also installs an addon.d script that auto re-patches the ROM upon update

If your ROM is odexed read this instructions on how to deodex services.jar manually

The Patcher supports installing the patched services.jar into the following locations:

  • NanoDroid Magisk Module
  • NanoDroid-microG Magisk Module
  • directly into /system

So you can use it regardless whether you're using NanoDroid or not.

microG Setup

Once your ROM supports signature spoofing, you need to setup microG like this

  • go into microG settings and set up everything like:
    • check results in Self-Check, grant missing permissions (by tapping on them)
      • especially the Battery Optimization item
      • if Phonesky (= Fake Store or Play Store) lacks signature spoofing permissions head to Settings > Apps > Permissions > Signature Spoofing and grant it
        • or manually using pm grant com.google.gms android.permission.FAKE_PACKAGE_SIGNATURE as root on-device
        • likewise pm grant com.android.vending android.permission.FAKE_PACKAGE_SIGNATURE for Phonesky
    • enable Google device registration
    • enable Google Cloud Messaging (only if you want to receive push messages from your applications)
    • enable Google SafetyNet (required for applications that utilize SafetyNet, for example Pokémon GO, ...)
    • in UnifiedNlp Settings choose either any or all of (whichever you've choosen to be installed)
      • Déjà Vu, Mozilla, Apple, Radiocell as Geolocation backend
      • Nominatim as Address lockup backend
    • after everything is done, reboot
    • if you installed Play Store open it, setup account and install your apps

Issues

List of known issues and their respective fixes or workarounds.

microG

  • Battery Drain
    • microG fails to register applications to GCM (Google Cloud Messaging) if they were installed before microG, but the apps keep trying to register and that causes the battery drain, all apps installed after microG are properly registered, to fix the battery drain either
      • do a clean flash of your ROM (, Magisk) and NanoDroid and install your apps after microG setup
      • uninstall and re-install all your applications (backup application data if required)
  • microG lacks features
    • if you use AppOps, PrivacyGuard or the like you have to grant microG GmsCore all permissions, if you prevent some permissions, some apps or features might not work as expected or not at all. Note: some APIs/features are stubs in microG GmsCore, meaning they exist that apps don't complain, but they do nothing - thus blocking microG GmsCore is pretty much of no benefit.
  • You can't get past the first page of the microG login wizard on KitKat
    • updating microG to (at least) 0.2.7.17455 will fix the issue

Updating Play support libraries

  • Play Store tries to update itself or the Play Services, both updates fail because you have microG and a modified Play Store installed
    • you can disable the GMSCoreUpdateService service of the Play Store to prevent it from updating

Google Account

  • Can't login to Google Account
    • there's an issue where logging in with version 74.x of Chrome/Chromium/Bromite or WebView derived from them fails
    • the fix is to update microG to (at least) version 0.2.7.17455

Google Play Services are missing

  • This misleading error message actually means 'Something is wrong with Play Store'
    • ensure as mentioned above you properly setup microG and reboot
    • install either Fake Store or Play Store
      • grant signature spoofing permission to Fake Store or Play Store
        • go to System Settings > Apps > Permissions > Signature Spoofing for that
        • on some ROMs you have to tap on the 3-dot-menu Show System Apps to see Fake Store
          • or manually using pm grant com.google.gms android.permission.FAKE_PACKAGE_SIGNATURE as root on-device
          • likewise pm grant com.android.vending android.permission.FAKE_PACKAGE_SIGNATURE for Phonesky

SafetyNet

Note: microG's Droid Guard Helper is currently not able to perform SafetyNet Attestation.

  • SafetyNet check complain with Google Play Services are missing
  • SafetyNet check fails after upgrading Magisk to version 18.0
    • go to Magisk Manager > Magisk Hide and activate it for microG DroidGuard Helper
  • Applications crash during SafetyNet check
    • install microG DroidGuard Helper as user-app (required on some ROMs), as root, on-device, issue:
      • pm install -r /system/app/DroidGuard/DroidGuard.apk
      • this is done automatically in Magisk Mode (as of version 20.5)

Play Store

  • Play Store giving error RH-01
    • ensure you rebooted after microG setup
    • ensure Play Store has signature spoofing permission
      • go to Settings > Apps > Permissions > Signature Spoofing and grant it
    • force close Play Store and open it again
    • go to Settings > Apps > Play Store > Permissions and grant at least the Phone permission

Push Messages

  • Apps are not receiving Push messages
    • go to microG Settings / Google Cloud Messaging and check if it is connected
    • ensure you don't have an adblocker blocking the domain mtalk.google.com it is required for GCM to work
    • when using Titanium Backup first install the app only (without data) and start it, this will register the app, after that you can restore the data using Titanium Backup
    • if an app is not shown as registered in microG Settings / Google Cloud Messaging, try uninstalling and re-installing it
    • when restoring the ROM from a TWRP backup GCM registration for apps is sometimes broken. You may use the following command to reset GMS settings for a given app using it's appname, or if no appname is given for all applications. Apps will re-register when launched afterwards:
      • nutl -r APPNAME (eg.: APPNAME = com.nianticlabs.pokemongo) or nutl -r
    • if you can't make any app registering for Google Cloud Messaging, try the following
      • open the Phone app and dial the following: *#*#2432546#*#* (or *#*#CHECKIN#*#*)

Unified Nlp

Note: unified Nlp has known issues on Android 10.

  • unified Nlp is not registered in the system
    • some ROMs with native signature spoofing don't look for com.google.android.gms as location provider
    • tell the developer (or maintainer) of the ROM to fix this
    • some versions of com.qualcomm.location conflict with uNlp, if it's installed and unified Nlp doesn't work, try the following command to get rid of it, as root, on-device:
      • novl -a com.qualcomm.location
  • unified Nlp is registered in the system, but fails to get location
    • issue the following commands as root, on-device:
      • pm grant com.google.android.gms android.permission.ACCESS_FINE_LOCATION
      • pm grant com.google.android.gms android.permission.ACCESS_COARSE_LOCATION
    • some versions of com.qualcomm.location conflict with uNlp, if it's installed and unified Nlp doesn't work, try the following command to get rid of it, as root, on-device:
      • novl -a com.qualcomm.location
  • Ichnaea (Mozilla) location backend doesn't provide location
    • if you use Blockada, add the location backend to the whitelist
    • for any other ad-blocker, whitelist the following domain:
      • https://location.services.mozilla.com

F-Droid

  • On some ROMs (most noticeably MIUI ROMs) F-Droid can't install applications
    • this is because F-Droid's Priviledged Extension is not compatible with those ROMs, disable it from
      • F-Droid > Settings > Expert Settings > Privileged Extension

Alarm Clock not ringing

  • Due to changes in Android, to ensure your Alarm Clock is actually waking you up, you need Android to ignore battery optimization for it, to do so:
    • go to System Settings > Apps > Special Access > Battery Optimization > All Apps
    • tap on your Alarm Clock, for example Alarmio and choose don't optimize

Google Software

  • Maps doesn't work when installed a second time

    • remove your Google Account and re-add it, that'll make Maps work again
    • remove traces from previous insallations, like
      • /sdcard/Android/data/com.google.android.apps.maps
      • /data/system/graphicsstats/1559520000000/com.google.android.apps.maps
        • where 1559520000000 is the Maps version, so may differ
  • Hangouts isn't properly working

    • as root, on-device, run the following command:
      • pm disable com.google.android.talk/com.google.android.apps.hangouts.service.NetworkConnectionCheckingService

Other

  • Some Stock ROMs do not properly work after first boot since their SetupWizard is disabled by NanoDroid (because it's incompatible with microG)
    • check /system/build.prop or /vendor/build.prop if they contain the property ro.setupwizard.mode and change it to (you can do this from TWRP via ADB, with the builtin vi editor)
      • ro.setupwizard.mode=DISABLED
      • in Magisk Mode NanoDroid will do this on it's own using Magisk's resetprop
    • if you can access your device via ADB, you can also issue the following command as root, on-device:
      • nanodroid-util --fix-update
  • Applications crash when using WebView (BromiteWebView package)
    • install Bromite WebView as user-app, as root, on-device, issue:
      • pm install -r /system/app/BromiteWebView/BromiteWebView.apk
      • this is done automatically in Magisk Mode (as of version 20.5)
  • ROM lags after applying signature spoofing patch
    • some ROMs already have the patch built-in, if you patch those ROMs (again), it results in heavy lags

Additional helpful information in the microG > Wiki.

License & Credits

My own work (NanoDroid itself) is licensed under the GNU General Public License version 3 or newer > GNU

For more details (including authors and license) on every provided application or Software press the link next to it.

Additional credits go to

Special Thanks to the contributors (starting with most recent contribution)

  • TanyaEleventhGoddess
    • various improvements and fixed for build-package
  • Gia90
    • Android 6.0 support for Patcher
    • fixes for x86_64 support
  • Vavun
    • OsmAnd package
    • several contributions to NanoDroid (and it's former microG GmsCore fork)

Special Thanks to the beta testers

  • xenithorb
  • ShapeShifter499

TODO

FAQ

Q: will there be a GApps version, instead of microG?
A: no. but you can choose not to populate microG.

Q: what devices is this tested on?
A: OnePlus 5T, OnePlus 3T, Nexus 6

Q: what ROMs was this tested on?
A: AICP, OmniROM, NitrogenOS; should work on any LineageOS / AOSP based ROM and most Stock ROMs.