data | ||
doc | ||
F-Droid | ||
Full | ||
microG | ||
patcher | ||
setup-wizard | ||
uninstaller/META-INF/com/google/android | ||
build-package | ||
busybox.arm | ||
busybox.x86 | ||
ChangeLog.md | ||
CommonAddon | ||
CommonInstaller | ||
force-debloat | ||
framework-patcher | ||
framework-patcher-remote | ||
LICENSE | ||
mount-magisk | ||
README.md |
NanoDroid
Versions until 15.1 were called NanoMod, starting with 16.0 they're called NanoDroid.
Current Release
- Stable: 17.9.20180818
- Beta: 18.0~beta2 (20180901)
Downloads
Primary Mirror
On AndroidFileHost all stable and beta releases are available.
- Stable Downloads > Androidfilehost
- Beta Downloads > Androidfilehost
Secondary Mirror
On Nanolx the latest stable and beta releases are available, no previous releases.
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- first step:
build-package pull
to download all required apks for Full, microG and F-Droid package
- second step:
build-package full
to create the full packagebuild-package microg
to create the microG only packagebuild-package fdroid
to create the F-Droid only packagebuild-package patcher
to create the on-device framework-patcher packagebuild-package uninstaller
to create the uninstaller packagebuild-package setupwizard
to create the Setup Wizard packagebuild-package all
to create all packages at once
- third step:
build-package u-microg
to update microGbuild-package u-fdroid
to update F-Droidbuild-package u-apps
to update (most) applicationsbuild-package u-swipe
to update swipe librariesbuild-package u-gsync
to update Google Sync Adaptersbuild-package pull
to update/re-download everything
- first step:
for apks downloaded from F-Droid or microG repository 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 downloadedclean
remove any untracked files from the repo (e. g. frombuild-package pull
)dalvik [.jar]
prepare a jar file for use with DalvikVMver [version] [date]
change project versionbump
increment Magisk module version by 1
The following applications are custom builds:
- Play Store (reason: re-signed and modified to support (in-)app-purchases with microG GmsCore)
- Fake Store (reason: built with CHECK_LICENSE permission)
- microG GmsCore (reason: built with more recent spoofed Play Services Version, more)
- microG DroidGuard Helper (reason: built with fix for non 32bit arm devices failing SafetyNet attestation)
- MPV (reason: infrequent updates, merge-requests included)
Also build-package
looks if the configuration files
.nanodroid-setup
.nanodroid-apps
.nanodroid-overlay
exist in the data
directory of the repository, if so, those files are used when creating packages instead of the default ones from the doc
directory.
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)
- Patchers works
- if your ROM's services.jar already contains classes.dex
- and you use baksmali/smali on PC to convert from ODEX 039 format to an older
- > Deodex Instructions
- Patchers works
earlier versions will never officially be supported (you may still report bugs, though).
Future versions will be officially supported, eventually.
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
- on-device framework-patcher for microG support (signature spoofing)
- on-pc framework-patcher for microG support (signature spoofing)
- GApps are auto-removed during installation
- using > NanoDroid-Overlay
- the Uninstaller will restore them in System Mode (or re-flash the ROM)
- see the > GApps Removal List
- location packages conflicting with unified Nlp will are auto-removed during installation
- using > NanoDroid-Overlay
- the Uninstaller will restore them (or re-flash the ROM)
- see the > GApps Removal List
- F-Droid and it's privileged extension
- modified Play Store to allow (in-)app-purchases with microG
- this required the Play Store to be modified, see the > patch
- alternatively Yalp Store can be installed instead
- custom init scripts
- pseudo-debloat feature (Magisk-only)
- disables applications systemless-ly
- pre-configured > default settings
- several Open Source applications
- include replacements for the pseudo-debloated applications
- full list of > included applications
- additional components
- GNU Bash shell
- GNU Nano terminal editor
- 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
- restored NanoDroid-Font setup, if required
- The Legend of Zelda ringtones and sounds
- System UI fonts from several Nintendo games
Packages
Modules
Module packages, flashing through TWRP recommended, though flashing through Magisk Manager works aswell.
- NanoDroid: includes
- everything mentioned in the Summary
- NanoDroid-microG: includes (only)
- microG and it's companions
- pseudo-debloat feature
- app store(s)
- GApps and location packages auto-removal
- NanoDroid-fdroid: includes (only)
- F-Droid and it's privileged extension
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/adb/MODID_log_INSTALLDATE
- /data/adb/MODID_twrp_INSTALLDATE
where MODID is either NanoDroid, NanoDroid_microG or NanoDroid_FDroid. INSTALLDATE is the date of installation in %Y%m%D_%H.%M.%S format (eg: 20180709_20.34.14), Note: when installing through Magisk Manager INSTALLDATE might be in UTC +0000, instead of your local time offset!
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, always flash through TWRP.
- NanoDroid-patcher: includes
- on-device framework-patcher for signature spoofing support
- requires an deodexed ROM
- 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/
- addon.d support files reside in
- on-device framework-patcher for signature spoofing support
- NanoDroid-setupwizard: includes
- AROMA based Setup Wizard to create the configuration files
- user can choose where to store the configuration files
/sdcard
(fallback)/external_sd
/data
- NOTE: AROMA only works on
arm
andarm64
, if your device isx86
orx86_64
, it won't work
- NanoDroid-uninstaller: includes
- uninstalls all NanoDroid Magisk Modules
- also old NanoMod Magisk Modules
- uninstalls NanoDroid installed in System Mode
- uninstalls NanoDroid configuration files
- 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)
- uninstalls all NanoDroid Magisk Modules
Scripts
Misc. Script for use from PC/Notebook, while device is in TWRP, they are found in this repository
- framework-patcher
- on-device framework-patcher for signature spoofing support
- requires an deodexed ROM
- creates the file
/data/adb/NanoDroid_Patched
after successful patching - invoke like
framework-patcher [ver]
- where [ver] is your Android version (6.0, 7.1, ...)
- the original, unpatched
services.jar
is backed up to/sdcard/nanodroid_backups
- on-device framework-patcher for signature spoofing support
- force-debloat
- system debloater
- the list of applications resides in the script itself
- needs to be run from TWRP, requires explicit user acceptance
- supports
.nanodroid-overlay
configuration file- uses fallback values, if none found
- which are in the script itself and can be edited
- uses fallback values, if none found
- has a test mode which prints what would be done
- mount-magisk
- script to mount or unmount Magisk in TWRP
- script toggles mount-state (read: will mount Magisk if unmounted and unmount Magisk if mounted)
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 lits 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-UPD
The nanodroid-upd
script allows to update NanoDroid's custom apks
- Play Store
- Fake Store
- MPV
which can't be updated through Play/Yalp Store or F-Droid otherwise
Full details on the NanoDroid-UPD 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
NanoDroid-Font
The nanodroid-font
script changes the Sytem UI font
Full details on the NanoDroid-Font 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
- symlink SD Card mount point to
- fstrim
- trim file systems (may increase speed)
- logcat
- store logcat in /data/adb
- logs older than 7 days are deleted on every reboot
- store logcat in /data/adb
- logscleaner
- clean up log files
- 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:
- col
- colcrt
- colrm
- column
- findfs
- findmnt
- hexdump
- look
- lsblk
- lscpu
- lsipc
- lslocks
- lsns
- ncal
- setterm
- whereis
Other shell utilities
GNU Bash and GNU Nano
NanoDroid includes GNU Bash shell and the GNU Nano terminal editor.
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 Déjà Vu location provider backend > F-Droid
- with Mozilla 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 official Play Store > APK Mirror or unofficial Yalp Store > F-Droid
- Yalp Store can use system permissions to install packages, so you don't need to enable
Unknown Sources
- go to Yalp Store > Settings > Installation Method >
Using system permissions
- go to Yalp Store > Settings > Installation Method >
- Play Store is modified to allow (in-)app-purchases with microG
- Yalp Store can use system permissions to install packages, so you don't need to enable
- GApps and several location services conflict with microG and unified Nlp. Thus they are removed during NanoDroid installation
- using > NanoDroid-Overlay
- see > GAppsRemoval for more details
F-Droid and Applications
F-Droid > Website is an app store for Open Source applications.
NanoDroid includes both F-Droid and it's Privileged Extension > F-Droid, so you don't need to enable Unknown Sources
.
Additionally NanoDroid includes a variety of applications, check full details > GitHub
The Legend of Zelda ringtones and sounds
NanoDroid includes The Legend of Zelda > Nintendo ringtones and sounds, because it's dangerous to root alone.
Full > Details
Nintendo Fonts
NanoDroid includes Nintendo Fonts.
Full > Details
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.
- 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
- either pre-patched with signature spoofing support or deoxeded so you can patch yourself (instructions follow)
- 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)
- install NanoDroid
- 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
- 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
- from either Magisk Manager or TWRP, doesn't matter
- 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
- running the
framework-patcher
script- use from your PC or laptop while your device is in TWRP. This shell script for GNU Bash (and compatible shells) works on unixoid operating systems like GNU/Linux, BSD or MacOS. It automizes the process of downloading Haystack > GitHub, pulling files from phone, patching and installing the modified
services.jar
on the device.
- use from your PC or laptop while your device is in TWRP. This shell script for GNU Bash (and compatible shells) works on unixoid operating systems like GNU/Linux, BSD or MacOS. It automizes the process of downloading Haystack > GitHub, pulling files from phone, patching and installing the modified
If you ROM is odexed read here on how to deodex services.jar manually
Both patchers support installing the patched services.jar
into the following locations:
- NanoDroid Magisk Module
- NanoDroid-microG Magisk Module
- directly into
/system
So you can use them 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
- 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, ...)
- '...' menu > set to use the Official Server
- in UnifiedNlp Settings choose
- Déjà Vu and/or Mozilla as Geolocation backend
- Nominatim as Address lockup backend
- after everything is done, reboot
- go to Play Store, setup account and install your apps
- check results in Self-Check, grant missing permissions (by tapping on them)
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
- Mar-V-In for microG
- topjohnwu for Magisk
- Lanchon for dexpatcher and haystack
- osm0sis for GNU Nano and Busybox
- shadow53 for automatic apk grabbing base code
- ale5000 for microG system permission files and GApps Removal list
- PaperYoshi for Nintendo Fonts
- anestisb for vdexExtractor
- JesusFreke for smali/baksmali
Special Thanks to the beta testers
- xenithorb
- ShapeShifter499
Issues
List of known issues
- SafetyNet check fails with
Google Play Services not available
- you did not setup microG (or did not reboot afterwards)
- 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 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
- 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.
Additional helpful information in the microG > Wiki.
TODO
- better error handling in on-pc framework-patcher
- on-device de-odexing of
services.jar
in NanoDroid-Patcher
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: One Plus 3T, Nexus 6, Moto G (3rd Gen)
Q: what ROMs was this tested on?
A: OmniROM, AOSP Extended; should work on any LineageOS / AOSP based ROM that is working with Magisk.