How to be able to install and use any app on FP Open OS [meta discussion]

  1. microG and UnifiedNLP are mixed in the same app (although from different repositories) inside F-Droid so you see versions of both of them.

  2. If you don’t have signature spoofing no app will use microG (except the ones patched specifically), so cosidering it optional is not really good.

  3. You must have a PlayStore or FakeStore or BlankStore (if you don’t have one of them apps will not detect Google Play Services - microG).

Personally I think that all this guide is confusing, a noob user want one way, everything else confuse people.

@paulakreuzer: My flashable zip install microG + Play Store + old Maps API in a single step, in a so easy way that even a child can do it :slight_smile:

Signal doesn’t need safety net, just microG (with Google Cloud Messaging enabled in the settings) + signature spoofing.

1 Like

yes, but then again: In Level 5 all I needed for my specific case (getting Signal to work) was “Step 5” and (after that, but, ok, that does not matter so much) step 1a.

Retrospectively, I think the main issue for me was that it took me a long time to understand WHY you need to do this or that. That’s the problem if things are presented as a set of instructions only (this is of course a general comment but also for the guide a few more explanations (or references to them?) might be good).

just for the sake of completeness (and ok, also to prove my point a bit :stuck_out_tongue: ) note that this information

does not match this one:

If the 2nd statement is true, then yes, for Signal it would probably have been enough to do Level 4. (But I always was very reluctant (still am) to try Xposed – it seems very involved. With Tingle it’s simply a single script that you run).

I will try to mark the changes I introduced and post it again (first wanted to edit above, but this is easier i think).

except for the headlines, i highlighted everything i changed in bold and with some “+”-signs (for the lack of assigning color to the text).

I realize that the “explanatory” comments i introduced might not be correct (see above, our discussion level 4 vs level 5) – especially the one in the beginning of level 5 (while the idea might be correct, the examples are probably poorly chosen)

:information_source: +++++++This is a list of the different possible ways to install apps on FP Open OS. For some apps only one way will be possible and for some you might have to trick them to work.+++++++
Since it’s a #wiki you can make it better by editing it. If you want to discuss the guide please do so here.

#Installing from .apk-files.

read on...

To install an App on Android you need an .apk file. This is a package that contains the app. But first, to be able to install such an .apk file you need to allow the installation from unknown sources in the phone’s settings. To Android an unknown source is anything but the Play Store unfortunately.
So go to Settings > Security and toggle “unknown sources”.
Now download the .apk file to your phone or copy it from your computer via USB.
E.g. download F-Droid from here: https://f-droid.org/
Once it’s downloaded you can tap on the notification or navigate to the file (depending on your browser either in “Downloads” or the browser’s folder) with the preinstalled App “Amaze”. After tapping the .apk file or the notification the installation window opens and you just have to tap “next” and “install”.

Troubleshooting - issues that may occur:

  • You can’t tap the “install” button.
  • This is another strange security feature of Android and usually caused by an app that is creating an overlay over your screen - e.g. to dim the screen in the evening. Another example is the App OpenWLANMap. Quit these apps (within the app or by going to Settings > Apps > All and tapping “force stop”) - then the “install” button should work again.
  • After I tap “install” I get an error message.
  • This usually happens if the app you try to install is not compatible with the phone. Make sure you are trying to install the right version of the app. Some apps will not install on modified Operating Systems (e.g. rooted). Either find an alternative app or see below for how to mock a unmodified OS.

#Installing from App Stores

read on...

App Stores - or app repositories - are Apps that show you a +++++++collection+++++++ of Apps to download and install and - usually - automatically check for updates of +++++++apps installed via the app store+++++++.

The most used App Store on Open OS is probably F-Droid. It contains only free (as in freedom and as in free beer) apps and it’s a very secure source for apps as the people who run it compile the apps themselves - making sure there is no malware or spyware embedded in them. You don’t need an account as with most other app stores.

I dare say you’ll get everything you need on F-Droid, unless you need a specific app that is not available there and you can’t use alternatives.
In that case you can try other App Stores like the Amazon Store or you can get apps from the +++++++Play Store from alternative+++++++ sources (see below).

Troubleshooting - issues that may occur:

  • “Can’t update app from different source”
  • If you have different app stores you can run into trouble updating. Basically you can only update each app within the same app store as you installed it in the first place. If you want to update it with another store - e.g. because Store 2 has a newer version than Store 1 - or even downgrade it - because you trust Store 1 more than Store 2 - then you need to uninstall the app first.

#Alternative sources for Play Store apps

read on...

So you switched to Open OS to get back a bit of your freedom from Google, but now you still want to use some apps that are not available on alternative stores?
That’s usually not a problem. You can download .apk files of Play Store Apps that don’t cost anything from

Most apps installed that way will work on Open OS. Some apps will claim they need Google Services, but still work. Some will really not work, but you can trick them into working (see below).

+++++++If you have troubles getting an app to work (because, for example, it requires Play Services or does not want to run on rooted phones) you can try one of the following:+++++++

#Tricking apps to work using Xposed modules

read on...

:exclamation: If you run into troubles caused by trying what is described below Fairphone Support may not be able to help you until you revert to a previous state. So make sure you make a good backup first - preferably with TWRP.

If an App you installed refuses to work (properly) because you don’t have Google Play Services installed or because your phone is rooted here are some tricks to work around this. For some apps these tricks won’t be enough and you’ll need to make them believe you have an unmodified OS (see below).

###Hiding root with Root Cloak

If an App says it won’t work on “rooted or jailbroken” devices +++++++and simply switching off root (in Settings > Developer (If there are no developer settings then root is not enabled)) doesn’t do the trick or you need root while using the app, you can try root cloak to hide your root status.+++++++

Here is how:

  • You’ll first need to enable root in the developer settings. If you don’t have developer settings then go to Settings > About phone and tap the build number 10 times.
  • Now go to Settings >Developer and enable root.
  • Now you’ll need XPosed. There are two versions - the official Xposed Framework and Systemless Xposed. Since the latter also works with Level 5: Mocking an unmodified OS I’ll explain how to install it here.
  • Install the Xposed Installer from here.
  • Start it and swipe to the left twice to get to the systemless tab. There download the Framework.
  • Xposed will ask for root access (allow it) and then reboot to recovery (TWRP).
  • In TWRP tap install and navigate to the downloaded file (it’s not in downloads but in +++++++Xposed+++++++.)
  • Install it and after you get the blue “Success” message reboot to system.
  • Now open Xposed Installer again and go to download and search for root cloak.
  • Download and install it, then go to Modules.
  • Enable root cloak and reboot the phone.

###Surpressing “This App needs Google Play Services” messages

If you have an app that works, but you constantly get error messages about the missing Google Play Services you can try the XPosed Module “This App will run without Google Play Services”.
Do the exact same thing as explained above for root cloak except don’t download +++++++the “root cloak” module+++++++ but “This App will run without Google Play Services”.

+++++++If this doesn’t do the trick you’ll need microG. See Step 5 in Mocking an unmodified OS. (Optional: Install the Xposed Module “Fake GAPPS” as you installed other Modules above.)+++++++

#Mocking an unmodified OS with microG

read on...

:exclamation: This could brick your device.
:warning: You’ll lose root and have to uninstall Xposed!

+++++++Note that some of these steps are optional. Your app might be happy with just µG with Nlp backends. Or it might additionally need the play store (i.e. “FakeStore”) or it might additionally need signature spoofing.+++++++

###Step 0: Prepare

  • Make a full backup with TWRP
  • If you already tried different ways and following this guide doesn’t work it may be best to start fresh, so wipe everything with TWRP (make sure you saved the backup somewhere else).
  • After you wipe the system with TWRP you’ll have to reinstall the OS, but before you can do that you’ll have to reboot to Recovery ( :exclamation: make sure you don’t reboot to system as there is none).
  • As TWRP starts again it will ask you whether it should be allowed to make changes to system. You’ll have to say yes!
  • You can then restore “Data” from your backup and continue with step 1.

###Step 1a: Patch the framework.jar with Tingle to be able to spoof signatures.

  • On your computer, download Tingle (https://github.com/ale5000-git/tingle) and its dependencies (java, p7zip-full, adb, +++++++python+++++++)
  • +++++++Connect your phone to your computer, make sure that
  • USB debugging is activated
  • adb has root access
  • multimedia usb sharing is deactivated (select PTP instead of MTP as usb connection option).
  • Verify that adb sees your device (you might have to add its USB ID first)
  • In your computer’s terminal type python main.py (or python3 main.py), select option “1 - patch file from a device (adb)” and keep a copy of the output+++++++

###Step 1b: Uninstall root +++++++(skip if not applicable)+++++++

@Roboe made a free flashable ZIP. :slight_smile:

  • Download ZIP to your FP2 (from here)
  • Flash from TWRP
  • Reboot to System
Alternative version with a proprietary app
  • Download and install Root Explorer from https://rootexplorer.co/ (thanks @oli.sax)
  • Open it, grant superuser rights.
  • Navigate to system/bin and delete “su”
  • Navigate to system/xbin, mount R/W and delete “su” ( :exclamation: make sure you do it in this order, otherwise you won’t be able to delete the /bin su file. )
  • Reboot, now you don’t have any root rights anymore.

You can test with Root Verifier or by trying to navigate to /root with Amaze. If you get an error message like “Amaze was not granted root rights” than you succeeded! :ballot_box_with_check:

Steps 2-4 are not necessary anymore. So they are hidden here.

###Step 2: Flash & Install Magisk.

Get the latest Magisk zip and apk from here flash the zip in TWRP and then install the apk.

If you start the app it and it tells you that root is not installed and everything is green then you succeeded! :ballot_box_with_check:

###Step 3: Flash & Install phh’s SuperUser.

Get the zip file from (direct link, thanks @oli.sax) and the apk from here. Flash the zip then install the apk.
:exclamation: TWRP doesn’t detect this way of implementing superuser either so every time you reboot from TWRP it will ask you to install superuser. Make sure to decline!

Now in magisk the root status should be “mounted” in red. Use the toggle, allow root rights and it should turn to a green “not mounted”. If so: Success! :ballot_box_with_check:

###Step 4: Install &Flash systemless Xposed.

Install the Xposed installer from here. If you have flashed Xposed before download the correct uninstalled within the app and flash it with TWRP. Now download the systemless Xposed and flash it.
If you open the Xposed Installer it should now show you a big white on green checkmark meaning you installed Xposed successfully! :ballot_box_with_check:

Install the “Fake GAPPS” module in systemless XPosed if you haven’t yet.

  • Enable the module
  • Reboot

###Step 5: Install +++++++microG+++++++.

  • Uninstall any +++++++microG+++++++ apps you may have downloaded from the standard F-Droid repository
  • +++++++Add the microG repository to F-Droid.
    • Go to the microG website and either
    • add the repository address manually in F-Droid->Options->Repositories->"+", or
    • use a QR-code reader (from F-Droid) to scan the code and then select to open the link in F-Droid to add the microG Repository)+++++++
  • Install the latest
  • microG Services Core
    • :exclamation: may be called “µg UnifiedNlp (no GAPPS)” instead. +++++++In the list of versions, make sure to select the latest version from the “microG F-Droid repo”, since then both versions from “microG F-Droid repo” and “F-Droid” are listed (the ones from “F-Droid” have higher version numbers, which might be confusing at first)+++++++
  • microG Services Framework Proxy
  • FakeStore
  • and at least one Unified NLP backend (from F-Droid repository, +++++++see this list to get an idea of what you might want+++++++).
  • Open +++++++microG+++++++ Settings
  • Enable device checkin and cloud messaging +++++++(currently called “Google device registration” and “Google cloud Messaging”)+++++++.
  • Do the +++++++“Self-Check”+++++++
  • Ensure that all points are checked. If one of the points is not checked, read its description.
  • +++++++Open the UnifiedNlp Settings and set up the Nlp Backends you installed in the previous point+++++++
  • Reboot
  • Open +++++++microG+++++++ Settings > Self-check again. Now all points should be checked. If so then you succeeded! :ballot_box_with_check:

###Step 6 +++++++(optional)+++++++: Install microG DroidGuard Helper.

From +++++++microG’s+++++++ F-Droid Repo.
Can be tested with com.scottyab.safetynet.sample. (from here thanks @oli.sax)
If it tells you “SafetyNet request: success” “Response validation: Success”, “CTS profile match: false”, then you succeeded! :ballot_box_with_check:

###Step 7 +++++++(outdated)+++++++: Updating the OS with this setting

This part is outdated

If there is a new update you won’t be able to apply it via the updater.

  • Download the “OTA” file from here and save it to your SD card along with the .zip files of the latest magisk, SuperUser and systemless XPosed (download from within the app or here)
  • Install the OS in TWRP and then flash magisk, Superuser and XPosed.
  • Reboot to System
  • Open Magisk and make sure it’s all still green and the superuser toggle works.
  • Open XPosed and make sure all Modules you need are enabled - if some weren’t reboot afterwards.
  • Open +++++++microG+++++++ Settings and do the selfcheck to see everything still works.
  • Disable root with magisk and check the Safetynet helper
  • If anything doesn’t work as expected make sure you have all the latest versions installed. If the problems persists let’s discuss here.

#Alternative/Workaround: “Multiboot” to FP OS

read on...

Follow this wiki to install EFIdroid and use it to install FP OS alongside FP Open OS.

Possible Issues & Cons:

  • For me Security Settings in FP OS kept crashing so someone who knows their way around ADB had to enable “allow unknown sources” remotely so I could install apps without a Google account.
  • You can use the guide from the first spoiler of this wiki to get rid of google as much as possible, but you won’t be as free and protected as on Open OS.
  • Also some apps will only work if you enable at least Google Play Store & Services.

Alright, yes. Something I also “got” in the meantime thanks to @ale5000’s comment.

You got me there. I messed up, but edited it now:

Thanks. I’ll edit the wiki now and incorporate some of your changes (some others we may have to discuss a bit further) and I’ll also add an explanation to the levels.


Some (more ;)) thoughts:

  1. “mocking” … is distributed across level 4 and 5. Level 5 actually seems to be more (rather: only?) about the DroidGuard/SafetyNet than about the mocking, which was already “started” in level 4.

… now i was about to suggest moving the µG instructions to level 4, but then again, all old references to “Level 5, Step 5” would be lost. meh :frowning:
(It would make a lot of sense though)

  1. it would be good to explain that for µG you do need signature spoofing (also only got this later, that this is because of the gms… name) and that there multiple ways to achieve this.

  2. in level 4 it should be made clear that one of the three options might already help to get the app working.

I can formulate some of this, if you ask me. But i’ll wait for you to finish, so we do not do things in parallel…

1 Like

Well mocking is just a word I used, it doesn’t describe a technical procedure.
You mock (or fake) the existence of Google Services in both Levels, but in Level 5 you go a step further and also mock/fake a SafetyNet check.

You are right, in hindsight it would have made more sense to put the µG instruction into Level 4 and only reference to it in Level 5 instead of the other way around. But I believe it’s better to leave it be now.

Great minds think alike. I did that in Level 4.

Good point, I’ll add that.

Another great point. I’ll tell you when I’m done, please check then what I missed.

PS: OK, done. I also changed some other things. E.g. Level 4 still explained how to use systemless XPosed, with the explanation that “you can use that in Level 5 too”, but that’s not true anymore since quite a while.

1 Like

great, i think this should be much more helpful for people playing around with these things for the first time. i just corrected 3/4 obvious things (typo, missing right parenthesis), which you can see highlighted with the compare fuction.

I suggest to change this:

If the above-mentioned Xposed Module doesn’t do the trick you’ll need microG.
Install the Xposed Module “Fake GAPPS” as you installed other Modules above and then do Step 5 in Level 5: Mocking an unmodified OS. (As an alternative to installing the Xposed module (which microG needs for “signature spoofing”) you can also use tingle as explained in Level 5, Step 1a).

To something like this:

If the “This App will run without Google Play Services”-module doesn’t do the trick, then you will need to mock the existence of the Play Services by installing microG, as explained in Level 5, Step 5.
In order to work, microG needs something called “signature spoofing” (read HERE (LINK???) why). There are two ways to achieve this: 1) Install the Xposed module “Fake GAPPS” as you installed other modules above. 2) Patch the framework.jar of your phone with Tingle, as explained in Level 5, step 1a.
(Whether you prefer 1) or 2) might depend on whether you already have Xposed installed and how comfortable you are talking to your phone via your PC terminal.)

yeah, well, not sure about the last hint, but i thought i’d leave it in for now, maybe somebody can come up with a better wording.

1 Like

I just have three concerns about this:

  1. If we explain why something is needed for every step in every level of the guide it will become very very long. Instead I’d rather add an entry to the forum dictionary and then simply link to it like this: microG needs this for signature spoofing.
  2. The signature spoofing bit should come before the reference to 5.5 to avoid people missing this step.
  3. Although you make it clear that the two ways to signature spoof are independent you should still use bullet points instead of numeration. If someone just reads:

They think they’ll have to do both.

Forum Dictionary??? – Wow, why did I not see this before? :wink:
Yes, links make sense, of course! (that’s what i meant by ‘read here why’)

Hello guys,

Since I’ve FP Open OS, I couldn’t use snapchat. I installed FakeGAPPS and microG like in the How to install any app tutorial and that worked partially. But when I tried to connect with my account I had the “failed login” error. It seems snapchat can detect if root is activated even with rootCloak. So I unrooted like in the tutorial I linked and uninstalled Xposed (I don’t know if it’s necessary). Without Xposed I couldn’t use FakeGAPPS so I used Tingle. Then I had not error message when I tried to connect and after the connection I re-rooted (flashing the SuperSu zip with TWRP) and Xposed :slight_smile:

I will improve this ‘tutorial’ with your sharing.

1 Like

Hi !
That is basically the same process I did for “Poke monGo” without the re-rooting at the end :slight_smile:

Did Snapchat’s error message actually say anything about root?

I believe there was something else going wrong. Did you do microg’s self check? Did it say that signature spoofing was active and working? (with the XPosed Module I mean)

If re-rooting and re-XPosing didn’t re-introduce the login error, then I’m pretty sure it hadn’t been caused by root or XPosed in the first place.

I have read something about that topic: Snapchat doesn’t care about root, but doesn’t like Xposed (because there are Xposed modules which modify the behaviour of the Snapchat app). So Snapchat refuses to log in when Xposed is installed. So Xposed has to be uninstalled to log in in Snapchat. After you have logged in, you can re-install Xposed, Snapchat won’t complain anymore (unless you have to log in again).

1 Like

Do you happen to know if you can trick Snapchat by using Systemless Xposed?

The message didn’t say anything about root but I did the microG’s self check and everything was checked. Furthermore I searched answers on the web and that’s what comes out the most.

Snapchat seems to do the control during the login process, once you’re connected the tricky part is beyond.

It’s possible too, maybe it’s just xposed or just root or both. I don’t know but if someone does the test, I will improve my post :slight_smile: