Magisk modules for removing/replacing Google applications on stock Android 11-17.
Noogle is developed in my free time. If it helps you get rid of Google, consider supporting its development:
| Name | Description |
|---|---|
| Noogle microG | Installs microG Services in place of Google Services (if present), comes in 4 variants |
| Noogle Unbundle | Removes other Google apps from system, comes in 3 variants |
Modules are independent, use one or both. Variants of a module replace each other, switch anytime by installing another variant over the installed one, the installer brings back or removes apps as needed.
| Variant | Play Store | Signature spoofing | microG updates from F-Droid | Play Integrity Fix |
|---|---|---|---|---|
noogle-microg |
Replaced by microG Companion | Needed | Yes | Yes |
noogle-microg-playful |
Kept * | Needed | Yes | Yes |
noogle-microg-catfish |
Replaced by microG Companion | Not needed | No | microG may crash |
noogle-microg-playful-catfish |
Kept * | Not needed | No | microG may crash |
Playful or not: Playful keeps Play Store of your ROM. The others replace it with microG Companion, which only provides Play Store services to apps, use Aurora Store to get apps.
Catfish or not: Regular variants need your ROM to report Google's signature for microG (signature spoofing), which stock Android can't do without Vector and FakeGApps. Catfish microG carries signing blocks copied from Google's APKs instead. Android doesn't check contents of system apps against their signatures, so it reports Google's signature without any spoofing. Idea from microG_no_sigspoof by IsHacker. The downsides:
- Signatures don't match the contents, so Catfish APKs can't be installed as user apps: microG updates come only with the module (switching to Catfish removes ones installed from F-Droid), and Play Integrity Fix workaround (microG installed as user updates) isn't possible
- Google's updates of Play Services pass as valid updates, the module removes them on every boot
- Tested on Android 15 emulator so far
If your ROM already supports signature spoofing (see ROMs), use a regular variant.
| Variant | Removes | Kept | List |
|---|---|---|---|
noogle-unbundle |
Google apps installable from store: Chrome, Gmail, Maps, YouTube, Photos, Drive, Google app... | Phone basics, accessibility, Google system components | packages.txt |
noogle-unbundle-hard |
Same, plus phone basics (Pixel Launcher, Phone, Messages, Gboard, Camera, Clock, Contacts...), accessibility (TalkBack, Speech Services), Google system components (Android System Intelligence, Digital Wellbeing, Android Auto...) and Pixel extras | Setup Wizard, Device Health Services, Network Stack, file and sound pickers, carrier services and others that break the phone when removed (tested) | packages.txt + packages-hard.txt |
noogle-unbundle-fossify |
Same as Hard, and installs Fossify apps as replacements | Same as Hard | Same as Hard |
They never remove apps Noogle microG replaces. Switching from Hard or Fossify to a lighter variant brings back apps removed only by them.
Fossify: installs Launcher, Phone, Messages, Keyboard, Contacts, Gallery, Calculator, Clock, Camera, File Manager, Calendar, Notes and Voice Recorder as system apps. They are the versions from F-Droid (Fossify's own reproducible builds), so F-Droid updates them, updates stay installed even after removing the module. On every boot the module switches to Fossify Keyboard when the keyboard in use is gone (also on lock screen, so you can type your password), and gives empty home, phone and SMS roles to Fossify apps. Other Fossify apps (Music Player, Paint, Documents...) are in F-Droid.
Warning
Hard removes apps your phone may have no other one for. Install and set up replacements before installing it: launcher, phone, SMS app, camera, clock with alarms, and a keyboard enabled in settings (without one you can't type your password). The installer keeps apps with no replacement installed (it shows them as KEPT), install the module again after adding replacements. Contacts, Gallery or Calculator are removed without checks, install your own if you need them. Open your clock and calendar once and allow notifications, otherwise alarms ring with nothing on screen to stop them and reminders don't show. On some phones alarms of any app may go silent without Google Clock, check yours rings after installing. Fossify variant brings its own replacements and allows notifications for Fossify Clock and Calendar, but the alarm warning applies too.
It requires Magisk v29.0 or newer. If you don't have it yet, consult the official installation instructions.
Tip
It's a good idea to enable ADB debugging as well before installing in case of any issues.
Note
KernelSU and APatch are supported too, but tested less than Magisk. Recent versions (KernelSU v3.0+, APatch 11219+) need a metamodule installed first (e.g. meta-overlayfs or NoMount, which one works best depends on the device), otherwise the module files are not mounted. On KernelSU disable "Umount modules" in App Profile of microG Services, microG Companion and Services Framework Proxy.
Note
Modules are mainly tested on Android emulators (Google Play images). Real devices and vendor ROMs may behave differently, please report any issues you hit.
- Download variant of your choice from releases
- For playful variant on ROMs without Play Store see playful build
- Noogle Unbundle is optional and works on its own, install it as a separate module
- Install through Magisk app
- Reboot, microG permissions are granted automatically on first boot
- Ensure all permission boxes are checked in microG Self-Check
- If not, click "Action" button next to module in Magisk to grant them again, or tap them in Self-Check
- Check signature spoofing status at the top of Self-Check
- Regular variants on ROMs without signature spoofing: add it
- Playful only: enable Google device registration in microG settings, Play Store doesn't work without it
Requires Linux, Mac or WSL on Windows with bash, zip, curl and jq. Optionally apksigner (Android SDK build-tools) and keytool (JDK) to re-sign Services Framework Proxy with newer signature schemes, which some ROMs may require.
- Run
scripts/pull-microg.shto download latest microG APKs toapk/and verify their checksums- Or download them manually and place in
apk/directory
- Or download them manually and place in
- Run
scripts/build-noogle-microg.sh(orscripts/build-noogle-unbundle.shfor Noogle Unbundle, it needs no APKs,-Hbuilds Hard,-FFossify afterscripts/pull-fossify.shdownloads Fossify apps)- Module will be created in
dist/ - Check
-hflag for build options, like destination partition
- Module will be created in
Released playful modules don't contain Play Store, they keep the one your ROM has. Bundling it would mean redistributing Google's APK, and it comes in different versions and architectures. If your ROM has no Play Store (e.g. LineageOS), build playful variant with Play Store APK yourself (-P below).
scripts/build-noogle-microg.sh -pbuilds playful variant, which keeps Play Store of your ROMscripts/build-noogle-microg.sh -P <apk>builds playful variant with given Play Store APK, for ROMs without Play Store (e.g. LineageOS)- Play Store APK must support your Android version (newer ones need Android 12+)
- This build is not updated by Magisk, updating to released playful build would remove Play Store
Catfish build needs zipalign and apksigner (Android SDK build-tools) and signing blocks of Google's APKs, which aren't in the repo:
- Get the signing blocks into
signatures/withscripts/pull-signatures.sh, once:- From a device with stock Google apps through ADB (Noogle microG disabled)
- Or from APK files:
scripts/pull-signatures.sh <Play Services APK> <Play Store APK> - It checks the APKs are signed by Google, microG ones are rejected
- Run
scripts/build-noogle-microg.sh -c, add-por-P <apk>for playful catfish (only microG Services gets Google's signature, Play Store has its own)
Instead of copying the module to your phone, you can build and install it through ADB in one go:
- Enable ADB debugging and connect your phone
- Grant root to Shell in Magisk (it will ask on first
adb shell su) - Run
scripts/install-noogle.sh- It builds the module, installs it and reboots the phone, asking before each step (
-yto skip) - It accepts the same build options as the build script,
-uinstalls Noogle Unbundle instead,-HNoogle Unbundle Hard,-FNoogle Unbundle Fossify
- It builds the module, installs it and reboots the phone, asking before each step (
| Module/Type | Notes |
|---|---|
| Vector + FakeGApps | Recommended way to enable signature spoofing, not needed with Catfish |
| Play Integrity Fix | Maintained forks only, not with Catfish |
| User updates | Installing microG updates from F-Droid repo, not with Catfish |
microG apps pretend to be Google apps, so Android must report Google's signature for them. This is called signature spoofing and microG Self-Check shows at the top whether it works. Catfish variants don't need it.
Some custom ROMs support it out of the box (e.g. LineageOS since 2024-02-26, crDroid, CalyxOS, /e/), in that case nothing else is needed. Note that Google changed signature checks in 2024-11, so older ROM builds may need an update.
Stock Android and most other ROMs don't support it, so it has to be added with an Xposed module. This is the way I recommend:
- Enable Zygisk in Magisk's settings
- Download and install Vector (formerly LSPosed) through Magisk
- Android 17 doesn't work yet, Vector can't load into the system there
- Download and install FakeGApps APK
- Supports up to Android 16, Android 17 is not confirmed yet
- Reboot
- Open Vector from notifications, enable FakeGApps in Modules and select System Framework as its only scope
- System Framework is hidden by default, show it with Filter > What the module asks for
- Tap Apply to save the scope
- Reboot, or tap Soft reboot in the dialog after Apply
- Check in microG Self-Check if signatures are correct now
- Optionally install Play Integrity Fix through Magisk, original is discontinued, use one of the maintained forks:
- PlayIntegrityFork by osm0sis
- PIF Inject by KOWX712
- It hides module files from microG, so the module installs microG Services and Companion as user updates on next boot
Other ways you may find:
- ROM patchers (Haystack, NanoDroid-patcher, Tingle) work properly only below Android 9
Enable Google device registration in microG settings and restart Play Store.
If microG crashes when used with other modules interacting with it, install both microG Services and microG Companion (same APKs as in this module, from official site) on top, as user updates. With Play Integrity Fix the module does it on its own on boot.
If you built the module yourself, you can install them from apk/ through ADB:
adb install --user all apk/com.google.android.gms*.apk
adb install --user all apk/com.android.vending*.apkIf you have ADB debugging enabled, connect your phone to PC and run scripts/disable-noogle.sh. It waits for the phone to connect, disables Noogle microG module and reboots it, so you can run it while the phone is bootlooping.
More nuclear option is to run adb shell magisk --remove-modules. It will remove all modules from Magisk and reboot.
If you don't have ADB enabled, you may try to restart the device a few times (holding Power + Vol-) while keeping Vol- for a while until animated boot animation starts. This will trigger Magisk safe mode and modules will be disabled. More about this in official documentation.
This module aims for stock Android support with Google apps preinstalled and doesn't require debloating Google apps first. Should work on AOSP-based ROMs as well.
Android 11 to 17, tested on emulators. On Android 17 signature spoofing with Vector doesn't work yet, so microG works there only on ROMs supporting spoofing on their own.
Only if Google apps are on regular partitions. Some of their ROMs (e.g. OxygenOS 12) keep them on my_* partitions like /my_heytap, which Magisk modules can't modify. The installer stops with a message in that case.
See which to choose, lists have a comment for each app and say what's kept on purpose. Apps not on your device are skipped.
Apps you updated stay installed as regular apps with their data, so you can uninstall them like any other app. Apps never updated are removed with their data. After uninstalling Noogle Unbundle they are back as system apps.
Only with regular variants on ROMs without signature spoofing, which is the case for every stock Android. Check the top of microG Self-Check, if spoofing is ticked, you don't need them. Catfish variants don't need them at all.
Yes, install a playful variant, see which to choose. If your ROM has no Play Store, build the playful variant with Play Store APK. Aurora Store works with all variants too.
Module updates with new microG versions come through Magisk app. With regular variants you can also install microG updates from microG F-Droid repo on top of the module. Or build the module yourself, scripts/pull-microg.sh downloads the latest microG.
Update microG to the latest version (see above). If you use a firewall, allow network access for microG Services, it's a separate app from Google's one.
The system partition is not modified, so after reboot preinstalled Google apps are back. Their updates are removed during module installation, so Play Store will download them again.
Google Play Services may be left without location permissions. Grant them with:
adb shell pm grant com.google.android.gms android.permission.ACCESS_COARSE_LOCATION
adb shell pm grant com.google.android.gms android.permission.ACCESS_FINE_LOCATIONOpen a bug report, it asks for your device, versions and logs:
- Installer output: save button in Magisk after installing
- Noogle microG log of last boot:
adb shell su -c cat /data/adb/modules/noogle-microg/service.log - For crashes, logcat right after the crash:
adb logcat -d -b crash,main > logcat.txt
Logcat may contain personal data like account names or nearby networks, check it before attaching. Questions are welcome in Issues.
- microG, Magisk, Vector and FakeGApps developers
- People reporting issues and sending pull requests on GitHub, especially:
- bschtl, for answering many issues too
- sewnie, becknik and adiktofsugar, for pull requests that shaped the APK download script, device path detection and microG permission updates
- StarchildCatalystN7, for a fork with fixes that helped users while the project was paused
- Louis047 and Gorkido, for testing and helping others update microG manually
- People in the XDA thread helping others and testing on their devices, especially:
- bschtl, for keeping the thread alive with fixes and workarounds (Play Store swap, KernelSU metamodule)
- someone8, for the inspiration and research on privileged permissions and signature spoofing, and the pointer to microG without it
- IsHacker, for microG_no_sigspoof, the idea behind the catfish variant
- stormy1777, for the Play Integrity Fix crash report and workaround