Apps aus dem Play Store auf freiem Android installieren

Nachdem man sein Handy oder Telefon mit Hilfe eines freien ROMs wie zum Beispiel CyanogenMod befreit hat, stellt sich immer die Frage, ob man die Google-Apps nachinstallieren sollte oder nicht. Der größte Nutzen eines alternativen ROMs besteht ja eigentlich darin, sich der ganzen Bloat- und Spyware zu entledigen, mit der das Gerät vollgemüllt ist und welche man nicht unter eigener Kontrolle hat.

Auf meinem Tablet habe ich jetzt das erste Mal das Experiment gewagt und mich dazu entschlossen, keine Google-Apps nachzuinstallieren. Doch leider sind nicht alle Apps komplett Open Source und schaffen es dadurch ins F-Droid-Repository oder sie sind nicht bei AndroidPit zu haben. Es kann also dazu kommen, dass man Apps benutzen möchte, die es nur in Googles Play Store gibt. Wie man diese ohne Play Store auf seinem freien Android installiert, möchte ich hier einmal zeigen.

Es gibt zwei Möglichkeiten an die Apps zu kommen:

  1. durch ein gerootetes Gerät mit Play Store
  2. durch den Android-Emulator

Mit Hilfe eines gerooteten Gerätes mit Play Store

Dieser Weg ist definitv der einfachste und daher auch der, den ich zu Hause benutze. Android benutzt zwei Speicherorte für heruntergeladene Apps:

  1. gratis-Apps liegen unter /data/app/
  2. gekaufte Apps hingegen verschlüsselt unter /data/app-asec/ und werden zur Laufzeit unter /mnt/asec/ eingebunden

Um sich die ganzen apk-Dateien zu sichern, muss man sich per adb shell auf dem Gerät einloggen oder alternativ das Terminal des ROMs benutzen.

./adb shell
shell@android:/ $ su
shell@android:/ $ mkdir /sdcard/temp
shell@android:/ $ cp /data/app/*.apk /sdcard/temp
shell@android:/ # for app in `ls /mnt/asec/`; do cp /mnt/asec/${app}/pkg.apk /sdcard/temp/${app}.apk; done

Nun haben wir einen Unterordner „temp“ auf der SD-Karte, in den wir die ganzen apk-Dateien gesichert haben.

Mit Hilfe des Android-Emulators

Dieser Weg ist etwas schwieriger und funktioniert bei mir bisher nur mit Gratis-Apps aus dem Play Store, da in den virtuellen Android-Geräten irgendetwas mit der asec-Verschlüsselung nicht klappt.

Für ein virtuelles Android muss zunächst einmal, wenn noch nicht vorhanden, das SDK herunter geladen werden: http://developer.android.com/sdk/index.html

Mit dem SDK-Manager ist die entsprechende Version zu laden. Im Test war bislang nur Android 4.1.2 erfolgreich.

Anschließend erstellt man sich ein virtuelles Android mit den folgenden Einstellungen:

  • AVD Name: testphone
  • Device: 10.1″ WXGA (Tablet) (1280×800: mdpi)
  • Android: 4.1.2 – API Level 16
  • Internal Storage: 4GB
  • SD Card: 4GB
  • Emulation Options: Snapshot

Sollten wir das Android jetzt starten, sind noch keine Google-Apps dabei. Doch im Wiki von CyanogenMod findet man das entsprechende zip-File.

Ich habe meine in einem Unterordner gapps unter /tmp entpackt:

unzip gapps-jb-20121011-signed.zip

Um genug Platz auf der System-Partition des Androids zu erhalten, müssen wir diese beim Starten angeben:

./emulator -partition-size 512 -avd testphone

Ist die virtuelle Maschine hochgefahren, müssen wir uns um Schreibrechte auf der System.Partition kümmern:

./adb shell mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
./adb shell chmod 777 /system/app

Nun können auch die wichtigen Google-APKs hochgeladen werden:

./adb push /tmp/gapps/system/app/GoogleLoginService.apk /system/app/.
./adb push /tmp/gapps/system/app/GoogleServicesFramework.apk /system/app/.
./adb push /tmp/gapps/system/app/Phonesky.apk /system/app/.

Die automatische Installation dauert eine Weile, doch bald findet man den Play Store bei den Applikationen, kann diesen starten und (bis auf gekaufte Apps) benutzen.

Das Sichern der heruntergeladenen Apps funktioniert analog zu dem obigen Beispiel.

Installieren auf dem freien Gerät

Die apk-Dateien können nun über die SD-Karte des Gerätes oder per adb push übertragen werden. Anschließend muss man sie nur noch im Datei-Manager auswählen und installieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.