Running Gapps on rooted Phone

Hi folks!

After playing around for a while, i managed to install my self-built version of FP OS along with the Google Apps provided by Open GApps. I installed the full version of Gapps.
Everything looks good except the location services. I cannot start my Play Store (force close), because it fails to connect to the fused location service:
E/AndroidRuntime(12965): java.lang.RuntimeException: Unable to start service com.google.android.finsky.services.LocationUpdaterService@e869759 with Intent { dat=locationupdateservice://update cmp=com.android.vending/com.google.android.finsky.services.LocationUpdaterService }: java.lang.IllegalArgumentException: provider doesn't exist: fused

Does anybody have an advice for me? Or at least any hint? :slightly_smiling:

Cheers,
Alex

Here is the solution to the problem:
I finally managed to make the Google Apps work. The main problem is related to signing the binary apks.
The Fairphone needs several precompiled apks, which are located under vendor/qcom/proprietary/target/product/FP2/.
Each of them is signed with the normal debug certificate during the
build process. The system server (or whatever component is responsible
for that) refuses to load those apks during startup. Since some of them
need access to the shared user “com.android.system”, they have to be
signed with the platform certificate. After i resigned all needed apks,
everything seems to be working. At least, the play store is working.

I wrote two scripts, which shall do the job for you:

  1. resign-blobs.sh: http://pastebin.com/0eX0u2J63 and the list of apks to resign: http://pastebin.com/YwWb9UpB3
    Create a bash script and copy the content of the first link to it. Second, create a file called resign-files.txt from the second link. Now, you can resign your apks.
    I suppose you are in your Fairphone OS directory. Simple run the script:./resign-blobs.sh. It will resign the apks and copy them to ${HOME}/Downloads/fp2.
  2. Create another bash from the content of this link: http://pastebin.com/ZvtP3Yp21
    It should be named install-apk-blob.sh. It needs a path to a directory where the resigned apks are located: ./install-apk-blob.sh ${HOME}/Downloads/fp2. It will automatically restart adb as root, remount /system, copy the apks and restart adb as non-root.

You have already compiled the software yourself? Great! I have no clue about GApps and how to get them up and running, but maybe it will help to add a Unified Network Location Provider (for using non-Google geolocation providers) to your selfcompiled code?

The error code looks like the play store wants a location update using the Google “fused” location provide. This does not work because the provider “fused” was not found. No idea. Maybe it will help providing this “update” with NLP. But I don’t know. Maybe all this work will be in vain and it will not help at all :frowning:

Hi there, just as an idea… maybe you could use location spoofing to fool the market (if you don’t about this service)? It is provided in tools like xPrivacy.

Here is a short tutorial video how to do it.

1 Like

Yeah, i could… I want to avoid that.
I’m looking for a clean solution like “simply install the gapps”. I don’t understand why the system complains about the missing service.
Maybe one of the fairphone software developers could light me up. I expect my self-built version to be able to run the usual Google apps.
There should not be any difference between a self-built version of FP2-OSOS and AOSP except for the FP add-ons.

There is a lot more difference if you talk about using the blobs and not using the blobs. Or do you compare AOSP with blobs and the official FP2-Release?

Hey flipreverse!

I think I’m having the exact same problem. I’ve got my self-built FP2 OS running with Open GApps (Pico).
Whenever I start the location service, the Player Store crashes instantly and I can’t re-enter the
Play Store. Only after turning off the location service again, I am able to use the Play Store.

I’ll double check if it is really the exact same problem. But it most likely is. So, any hint by the FP2 devs
would be much appreciated.

Regards,
Jan

Great news! :slightly_smiling:
I finally managed to make the Google Apps work. The main problem is related to signing the binary apks.
The Fairphone needs several precompiled apks, which are located under vendor/qcom/proprietary/target/product/FP2/. Each of them is signed with the normal debug certificate during the build process. The system server (or whatever component is responsible for that) refuses to load those apks during startup. Since some of them need access to the shared user “com.android.system”, they have to be signed with the platform certificate. After i resigned all needed apks, everything seems to be working. At least, the play store is working. :slightly_smiling:

I wrote two scripts, which shall do the job for you:

  1. resign-blobs.sh: http://pastebin.com/0eX0u2J6 and the list of apks to resign: http://pastebin.com/YwWb9UpB
    Create a bash script and copy the content of the first link to it. Second, create a file called resign-files.txt from the second link. Now, you can resign your apks.
    I suppose you are in your Fairphone OS directory. Simple run the script:./resign-blobs.sh. It will resign the apks and copy them to ${HOME}/Downloads/fp2.
  2. Create another bash from the content of this link: http://pastebin.com/ZvtP3Yp2
    It should be named install-apk-blob.sh. It needs a path to a directory where the resigned apks are located: ./install-apk-blob.sh ${HOME}/Downloads/fp2. It will automatically restart adb as root, remount /system, copy the apks and restart adb as non-root.

Cheers,
Alex

4 Likes

Hi Alex,

the two links in 1) and 2) are identical? I don’t see the script differenciate on $0, so might it be there’s wrong link?

Klaus

You were right. I corrected the link in 2).
Thanks!