@ -23,73 +23,63 @@ Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
## Configuration File
To alter the installation you can create the file
To alter the installation you can create the file`.nanodroid-setup` on your device, in one of the following directories:
`.nanodroid-setup`
on your device, in one of the following directories
* `/data/media/0` (internal storage (TWRP))
* `/sdcard1` (internal storage (ORANGEFOX))
* `/data/media/0` (internal storage **[TWRP]**)
* `/sdcard1` (internal storage **[ORANGEFOX]**)
* `/external_sd` (TWRP path to SD Card (if any))
* `/data` (fallback)
* `/system/addon.d/` (fallback if TWRP can't mount `/data`)
* `/tmp` (fallback if TWRP can't mount `/data`)
You can use the [default configuration file](.nanodroid-setup) as a starting point. Below follows the detailed information on what each setting does (also described in the file itself); also which setting is support by what package. If an required entry is missing from your configuration file, the default setting will be added to your configuration file.
You can use the [default configuration file](.nanodroid-setup) as a starting point. Below follows its detailed description. If a required entry is missing from your configuration file, the default setting will be added to your configuration file.
@ -21,7 +21,7 @@ On GNU/Linux, MacOS or xBSD clone this repository and use the provided `build-pa
download required files:
* `build-package pull` to download all required apks and libraries for the Full, microG and F-Droid packages
for apks downloaded from F-Droid repositories or from APK Mirror, `build-package` checks the SHA256 hash.
For apks downloaded from F-Droid repositories or from APK Mirror, `build-package` checks the SHA256 hash.
update required files:
* `build-package u-microg` to update microG
@ -62,14 +62,14 @@ The `build-package` script additionally supports the following parameters:
If you want to use custom APKs in your build, place them into the `local` directory in the root of the NanoDroid tree.
The name of your APK must match the targetname in the NanoDroid package, e.g. `GmsCore` for a custom microG build or `Phonesky` for a custom Play Store build.
The name of your APK must match the targetname in the NanoDroid package, e.g. `GmsCore` for a custom microG build or `Phonesky` for a custom Play Store build.
See the `file_database` in [build-package.database](../data/build-package.database).
Note: sideloading libraries is currently not supported!
**Note:** sideloading libraries is currently not supported!
## "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
* `export BP_USE_WGET=1` tells the script to use wget for downloading indices and APKs
@ -14,11 +13,11 @@ Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
Here you can find instructions on how to manually deodex `services.jar` as preparation for Signature Spoofing support.
If you want to check beforehand (or afterwards), if your ROM supports Signature Spoofing, use this [tool](https://f-droid.org/de/packages/lanchon.sigspoof.checker/).
If you want to check beforehand (or afterwards) if your ROM supports Signature Spoofing, use this [tool](https://f-droid.org/de/packages/lanchon.sigspoof.checker/).
## Pre-Check
If your `/system/framework/services.jar` file contains the file `classes.dex`, you can skip deodexing and start patching right-away, else following these instructions.
If your `/system/framework/services.jar` file contains the file `classes.dex`, you can skip deodexing and start patching right-away. Else follow these instructions.
## Android 9.0 Pie
@ -28,9 +27,9 @@ VdexExtractor will create CompatDex for Android 9.0 (more precisely VDEX 019 fil
## VDEX
If you can see `/system/framework/oat/[arch]/services.vdex`, where [arch] is the device architecture (arm, arm64, x86 or x86_64), you should follow theese instructions.
If you can see `/system/framework/oat/[arch]/services.vdex`, where `[arch]` is the device architecture (arm, arm64, x86 or x86_64), you should follow theese instructions.
the instructions are basically simple, though plenty commands:
The instructions are basically simple, though there is a lot of commands:
* connect phone with PC while in TWRP, mount `/system` **read-write**
* get latest `vdexExtractor`
@ -38,46 +37,45 @@ the instructions are basically simple, though plenty commands:
* zip/unzip utilities for commandline (or some UI tool)
* common sense on using commandline (or some UI tool instead)
This will create the following file: `framework/oat/[arch]/services.apk_classes.dex`
if it's properly been created rename it to classes.dex and add it to `services.jar`, if there are additional files like services.apk_classes2.dex, rename them to classes2.dex and so on and add them to services.jar like:
If it has been properly created, rename it to `classes.dex` and add it to `services.jar`. If there are additional files like `services.apk_classes2.dex`, rename them to `classes2.dex` and add them to `services.jar` like this:
Then, install the new `services.jar` on the device:
```
```bash
adb push framework/services.jar /system/framework
adb shell
chmod 0644 /system/framework/services.jar
chown root:root /system/framework/services.jar
```
unmount `/system` and flash the NanoDroid-Patcher.
Unmount `/system` and flash the **NanoDroid-Patcher**.
If something goes wrong you still have the unpatched `services.jar`, as we created a copy named `services.jar-backup`.
If something goes wrong, you still have the unpatched `services.jar`, as we created a copy named `services.jar-backup`.
## ODEX
If you can see `/system/framework/oat/[arch]/services.odex`, where [arch] is the device architecture (arm, arm64, x86 or x86_64), you should follow theese instructions.
If you can see `/system/framework/oat/[arch]/services.odex`, where `[arch]` is the device architecture (arm, arm64, x86 or x86_64), you should follow theese instructions:
the instructions are basically simple, though plenty commands:
The instructions are basically simple, though there is a lot of commands:
* connect phone with PC while in TWRP, mount `/system` **read-write**
* get latest `baksmali.jar` and `smali.jar`
@ -85,35 +83,35 @@ the instructions are basically simple, though plenty commands:
* zip/unzip utilities for commandline (or some UI tool)
* common sense on using commandline (or some UI tool instead)
somestimes baksmali.jar can't find the bootclasses file itself, in this case pass it manually using `-b`, for example:
Sometimes `baksmali.jar` can't find the bootclasses file itself. In this case, you need to pass it manually using `-b`, for example:
`-b framework/[arch]/boot.oat`
in any case, if a new classes.dex was successfully created in the services-new directory, re-package it into the services.jar we previously pulled:
In any case, if a new `classes.dex` was successfully created in the services-new directory, re-package it into the `services.jar` we previously pulled:
```
```bash
zip -j framework/services.jar classes*.dex
```
next install the new `services.jar` to device:
Then, install the new `services.jar` on the device:
```
```bash
adb push framework/services.jar /system/framework
adb shell
chmod 0644 /system/framework/services.jar
chown root:root /system/framework/services.jar
```
unmount `/system` and flash the NanoDroid-Patcher.
Unmount `/system` and flash the NanoDroid-Patcher.
If something goes wrong you still have the unpatched `services.jar`, as we created a copy named `services.jar-backup`.
@ -17,7 +17,7 @@ Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
# NanoDroid
This lists features unique to NanoDroid.
This lists unique NanoDroid features.
## NanoDroid-Overlay
@ -80,13 +80,9 @@ The following init scripts are bundled with NanoDroid
When in Magisk Mode the init scripts create their log files in
`/magisk/NanoDroid/logs/${script}.log.${date}`
`/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.
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.
## GNU Bash
@ -126,7 +122,7 @@ NanoDroid includes microG as follows
## F-Droid
F-Droid [> Website](http://www.fdroid.org) is an app store for OpenSource applications.
F-Droid [> Website](http://www.fdroid.org) is an app store for FOSS (Free and OpenSource Software) applications only.
NanoDroid includes both F-Droid and it's Privileged Extension [> F-Droid](https://f-droid.org/repository/browse/?fdfilter=f-droid&fdid=org.fdroid.fdroid.privileged), so you don't need to enable `Unknown Sources`. Alternatively (or additionally) you can install Aurora Droid [> F-Droid](https://f-droid.org/de/packages/com.aurora.adroid/).
* [Installation on Stock ROM without GApps, custom ROM with/without OpenGApps](#installation-on-stock-rom-without-gapps-custom-rom-withwithout-opengapps)
* [Installation on Stock ROM with GApps](#installation-on-stock-rom-with-gapps)
* [Installation on Stock ROM without GApps, custom ROM with/without OpenGApps](#installation-on-stock-rom-without-gapps-custom-rom-withwithout-opengapps)
* [Installation on Stock ROM with GApps](#installation-on-stock-rom-with-gapps)
* [Upgrading NanoDroid](#upgrading-nanodroid)
* [Installation Logfiles](#installation-logfiles)
Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
@ -33,13 +33,13 @@ Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
## Parallel Installations
Since the microG and F-Droid packages are subsets of the Full NanoDroid package, they can't be installed alongside.
Given that **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.
The **microG** and **F-Droid** packages can however be installed in parallel, as they complement each other.
## Installation on Stock ROM without GApps, custom ROM with/without OpenGApps
## Installation on Stock/custom ROM without GApps/OpenGApps
OpenGApps and GApps-less ROMs don't need further measurements, the Installer takes care of required steps.
OpenGApps and GApps-less ROMs don't need further manual steps, the Installer takes care of required steps.
* perform full wipe (/system, /data, /cache, Dalvik/ART cache)
* recommended, but not required
@ -59,7 +59,7 @@ OpenGApps and GApps-less ROMs don't need further measurements, the Installer tak
## Installation on 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.
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
@ -100,11 +100,11 @@ When upgrading NanoDroid you may just:
## Installation Logfiles
The recovery log and installation configuration is stored after installation, regardless with it succeeded or failed.
The recovery log and installation configuration are stored after installation, regardless it succeeded or failed.
@ -36,40 +36,51 @@ Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
### Battery Drain
* microG fails to register applications to GCM/FCM (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 issue the following command as root on your device (or via adb shell):
* this will force un-register all your applications from GCM/FCM and they'll re-register on next start
microG fails to register applications to GCM/FCM (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, issue the following shell command as root:
Alternatively, use `nutl -r` to force un-register all your applications from GCM/FCM (they'll re-register on next start)
### 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.
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. They exist so that apps don't complain, but they do nothing so there is no benefit to block GmsCore.
### permissions not granted on Android 10+
### permissions not granted on Android 10 or newer
On some ROMs, It might happen that microG (Magisk mode) is not granted the `RECEIVE_SMS` and `ACCESS_BACKGROUND_LOCATION` permissions. The fix is to install microG as user-app addtionally to system-app. This is done automatically starting with version 23.0 of NanoDroid (and **not** required in System Mode installation).
* in Magisk Mode it might happen on some ROMs that microG is not granted the `RECEIVE_SMS` and `ACCESS_BACKGROUND_LOCATION` permissions, the fix is to install microG as user-app addtionally to system-app, this is done automatically starting with version 23.0 of NanoDroid (and **not** required in System Mode installation), to do so issue the following command on-device as root (via adb shell or Termux):
FYI, to do so, issue the following command on-device as root (via adb shell or Termux):
* Full package: `pm install -r /data/adb/modules/NanoDroid/system/priv-app/GmsCore/GmsCore.apk`
* see [microG issue #1100](https://github.com/microg/android_packages_apps_GmsCore/issues/1100#issuecomment-711088518) and [microG issue #1100](https://github.com/microg/android_packages_apps_GmsCore/issues/1100#issuecomment-711141077) for background information
See [microG issue #1100](https://github.com/microg/android_packages_apps_GmsCore/issues/1100#issuecomment-711088518) and [microG issue #1100](https://github.com/microg/android_packages_apps_GmsCore/issues/1100#issuecomment-711141077) for background information
### can't login to Google account on KitKat
* updating microG to (at least) 0.2.7.17455 will fix the issue
Updating microG to (at least) 0.2.7.17455 will fix the issue
### can't login to Goggle account with version 74.x of Chrome/WebView
* updating microG to (at least) 0.2.7.17455 will fix the issue
Updating microG to (at least) 0.2.7.17455 will fix the issue
## 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](#microg-setup) 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
This misleading error message actually means *Something is wrong with Play Store*.
Ensure as mentioned above you properly [setup microG](#microg-setup) and reboot.
Then, 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
@ -97,8 +108,7 @@ Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
### 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
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.
### Can't install split APKs / extra data
@ -108,7 +118,8 @@ Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
### Play Store does not show bought apps as bought
If your Play Store doesn't show already bought apps as bought, you need to register the device ID to your Google Account, doing so will eliminate the "uncertified" status of Play Store and thus will allow you to re-download your already bought apps. Also remote installations using `https://play.google.com` will be working again afterwards.
If your Play Store doesn't show already bought apps as bought, you need to register the device ID to your Google Account. Doing so will eliminate the "uncertified" status of Play Store and thus will allow you to re-download your already bought apps. Also, remote installations using `https://play.google.com` will work again afterwards.
* Go to microG Settings > Google Device Registration and note the `Android ID`
* Navigate to `https://www.google.com/android/uncertified/` and login using your Google Account
* Enter the ID shown in microG settings into the `Android ID` box and tap register
@ -117,7 +128,7 @@ If your Play Store doesn't show already bought apps as bought, you need to regis
### Play Store web interface can't install apps on my device
See "Play Store does not show bought apps as bought" above, same fix.
See *Play Store does not show bought apps as bought* above, same fix.
## Push Messages
@ -132,7 +143,7 @@ See "Play Store does not show bought apps as bought" above, same fix.
## Unified Nlp
**Note:** unified Nlp has known issues on Android 10.
**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
@ -153,9 +164,8 @@ See "Play Store does not show bought apps as bought" above, same fix.
## 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
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
## Aurora Store / Aurora Droid
@ -204,8 +214,7 @@ See "Play Store does not show bought apps as bought" above, same fix.
### 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
* recent Patcher versions check whether the ROM has the patch already applied and disallow double-patching
Some ROMs already have the patch built-in. If you patch those ROMs (again), it results in heavy lags. Recent Patcher versions check whether the ROM has the patch already applied and disallow double-patching
@ -16,26 +16,21 @@ Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
## Purpose
The `nanodroid-overlay` Script, respectively it's shortcut `novl` is used by NanoDroid to handle the
The `nanodroid-overlay` Script (`novl` for short) is used by NanoDroid to handle the
* Pseudo Debloat Feature (Magisk Mode)
* Force Debloat Feature (System Mode)
### Pseudo Debloat Feature
Magisk allows for apps to be magically removed upon runtime, they don't get actually removed from `/system` but they are pseudo-removed during runtime.
Magisk allows apps to be magically removed upon runtime. They don't get actually removed from `/system` but they are pseudo-removed during runtime (replaced by a dummy file)
### Force Debloat Feature
In System Mode apps can are moved to `/data/media/0/nanodroid_backups/`or restored from there.
In **System Mode**, apps are moved to `/data/media/0/nanodroid_backups/`to be restored from there if necessary.
### Alter the list of pseudo-debloated applications
You can pseudo-debloat applications by adding them to configuration file
`.nanodroid-overlay`
on your device, in one of the following directories
You can pseudo-debloat applications by adding them to the `.nanodroid-overlay` configuration file on your device, in one of the following directories:
* `/data/media/0` (internal storage (TWRP))
* `/sdcard1` (internal storage (ORANGEFOX))
@ -62,17 +57,15 @@ The following paths are searched for matching apps:
After you've made your changes, issue the following command on your device, either using `adb shell` or **Termux** as root:
`nanodroid-overlay --update`
```bash
nanodroid-overlay --update
```
## Invocation
From within a terminal on your device, for example `adb shell` or `Termux` invoke the script using either
`nanodroid-overlay [switch] [parameter(s)]`
or
From a terminal on your device, for example `adb shell` or `Termux` invoke the script using either
`novl [switch] [parameter(s)]`
`nanodroid-overlay [switch] [parameter(s)]` or `novl [switch] [parameter(s)]`
## Overview
@ -112,25 +105,4 @@ remove existing Overlays
## Default Settings
The following applications are debloated by default
* Basic Dreams
* Calendar
* CM File Manager
* crDroid Filemanager and Music Player
* Eleven, Phonograph (Audio Player)
* E-Mail + Exchange2
* Browser, Gello, Slimperience, Via Browser, Jelly (Browser)
Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
@ -12,17 +12,11 @@ Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
## Purpose
The `nanodroid-prop` Script, respectively it's shortcut `nprp` is used by NanoDroid to utilize Magisk's `resetprop` feature for on-the-fly and permanently adjusting system properties. Properties set by this script survive NanoDroid updates
The `nanodroid-prop` Script (`nprp` in short) is used by NanoDroid to utilize Magisk's `resetprop` feature for on-the-fly and permanently adjusting system properties. Properties set by this script survive NanoDroid updates.
## Invocation
From within a terminal on your device, for example `adb shell` or `Termux` invoke the script using either
`nanodroid-prop [switch] [parameter(s)]`
or
`nprp [switch] [parameter(s)]`
From within a terminal on your device, for example `adb shell` or `Termux` invoke the script using either `nanodroid-prop [switch] [parameter(s)]` or `nprp [switch] [parameter(s)]`
From within a terminal on your device, for example `adb shell` or `Termux` invoke the script using either
`nanodroid-util [switch] [parameter(s)]`
or
`nutl [switch] [parameter(s)]`
From within a terminal on your device, for example `adb shell` or `Termux` invoke the script using either `nanodroid-util [switch] [parameter(s)]` or `nutl [switch] [parameter(s)]`
## Feature overview
@ -42,50 +35,46 @@ or
`-f`, `--fix-update`
fix issues with the navigation bar, status bar or lock screen after applying an OTA update; for a detailed description about this check [> XDA](https://www.xda-developers.com/broken-navigation-bar-lock-screen-ota-update/)
Fix issues with the navigation bar, status bar or lock screen after applying an OTA update.
For a detailed description about this, check [> XDA](https://www.xda-developers.com/broken-navigation-bar-lock-screen-ota-update/)
### Airplane Mode settings
`-a`, `--airplane-mode`
change Airplane Mode settings, this is interactive, user will be given instructions what to do. This allows to change which radios are disabled by Airplane Mode **and additionally** it instructs Android that it does**not** allow re-activation of **those** radios until Airplane Mode is switched off
Change Airplane Mode settings. This is interactive. User will be given instructions on what to do. This allows to change which radios are disabled by Airplane Mode. It also force Android to**not** allow re-activation of **those** radios until Airplane Mode is switched off.
### Prevent audio focus stealing
`-F`, `--audio-focus` [app]
some apps stop audio playback of other apps, when you bring them in foreground (or activate them in multi window mode), with this you can prevent Android from allowing this; [app] is the application name in `com.organisation.application` format, for example `com.xda.labs`
Some apps stop audio playback of other apps when you bring them in foreground (or activate them in multi window mode). With this, you can prevent Android from allowing this behaviour.
[app] is the package name (`com.organisation.application` format). For example: `com.xda.labs`
### Prevent clipboard reading
`-B`, `--read-clipboard` [app]
many apps have the permission to read the clipboard for no reason, with this you can prevent Android from allowing this; [app] is the application name in `com.organisation.application` format, for example `com.xda.labs`
Many apps have the permission to read the clipboard for no reason. You can prevent this behaviour with this.
[app] is the package name (`com.organisation.application` format). For example: `com.xda.labs`
**Note:** don't do this in applications like Browsers or the-like, as you'll disable the whole copy-paste feature for those app(s) with this feature
**Note:** do NOT do this in applications like Browsers or the-like as you'll disable the whole copy-paste feature for those app(s).
### Read boot count
`-b`, `--boot-count`
show how often the device was booted; requires Android 7.0 or newer
Show how often the device was booted; requires Android 7.0+
### Reset GCM Connection
You can reset GCM connection of all apps using
You can reset GCM connection of all apps using`-r`, `--reset-gms-data` or for a single app using `-r [appid]`, `--reset-gms-data [appid]`
`-r`, `--reset-gms-data`
or for a single app using
`-r [appid]`, `--reset-gms-data [appid]`
this is especially useful when the ROM in use previously had GApps installed and now you're not receving any push messages anymore.
This is especially useful when the ROM in use previously had GApps installed and now you're not receving any push messages anymore.
### Reset Permissions
In a rare corner case applications are not granted permission to access camera or storage, despite the user granted the corresponding permission, using
`-R`, `--reset-permissions`
followed by a reboot will fix this issue.
In a rare corner case, applications are not granted permission to access camera or storage, despite the user granted the corresponding permission. Using `-R`, `--reset-permissions` followed by a reboot will fix this issue.
@ -13,22 +13,20 @@ Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
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 does **not** have signature spoofing support, you can manually patch it by 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](DeodexServices.md) on how to deodex services.jar manually
If your ROM is **odexed**, read [this instructions](DeodexServices.md) 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.
So you can use it regardless you're using NanoDroid or not.
## microG Setup
Once your ROM supports signature spoofing, you need to setup microG like this
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)