Android-Apps
Die Anpassung von Android-Apps für Reedah umfasst mehrere Schritte: (a) App beschaffen, (b) entpacken, (c) ändern, (d) packen und signieren, (e) installieren.
Schritt 1: App beschaffen
Sie benötigen eine Kopie der App auf Ihrem PC (Windows oder Linux). Dafür gibt es zwei Möglichkeiten:
- Laden Sie sie direkt aus dem Web herunter. gReader erhalten Sie zum Beispiel auf GitHub, oder
- Installieren Sie sie über Google Play auf Ihrem Gerät und kopieren Sie die APK-Datei von dort. gReader wird beispielsweise unter /data/app/com.noinnion.android.greader.reader-1.apk gespeichert.
Schritt 2: App entpacken
Für diesen Schritt benötigen Sie Folgendes:
- Ein Programm zum Packen und Entpacken von ZIP-Archiven (z. B. PeaZip, WinZip, WinRAR).
- Das Java Development Kit (JDK). Dieses Verfahren funktioniert Berichten zufolge am besten mit JDK 6.
- Smali und Baksmali, erhältlich auf Github.
Sobald diese Voraussetzungen erfüllt sind, gehen Sie wie folgt vor:
- Öffnen Sie die APK-Datei (App) mit PeaZip und extrahieren Sie die Datei classes.dex.
- Geben Sie in einer Windows-Eingabeaufforderung (oder Linux-Shell) Folgendes ein:
java -jar baksmali-2.0b6.jar -o classout/ classes.dex
Dies setzt voraus, dass sich Java in Ihrem Pfad befindet; unter Windows müssen Sie eventuell beispielsweise Folgendes eingeben:set PATH=%PATH%;"c:\program files\java\jdk1.6.0_45\bin"
Wenn Sie andere Versionen von JDK bzw. Baksmali heruntergeladen haben, passen Sie die Dateinamen entsprechend an.
Schritt 3: App ändern
Beim Ändern der App ersetzen Sie alle Verweise auf Google Reader (oder andere Alternativen) durch Verweise auf Reedah. Bei den meisten Android-Apps gelingt das per Suchen und Ersetzen in einem Texteditor wie Notepad oder Wordpad.
Prinzip und Vorgehen sind zwar einfach, es gibt jedoch zwei Herausforderungen:
- Welcher Text genau muss gesucht und ersetzt werden? Wenn die App TheOldReader nutzt (das gilt für gReader-Versionen seit Juli):
- Ersetzen Sie alle Vorkommen von „theoldreader.com“ durch „www.reedah.com“.
- Da TheOldReader nicht mit der Google Reader API kompatibel ist, sollten Sie außerdem nach "?output=json" suchen und es durch "?output=json&client=tor" ersetzen. In diesem Fall müssen die Anführungszeichen in die Suche einbezogen werden.
- Ersetzen Sie alle URLs, die „google.com“ enthalten, durch „reedah.com“.
- Ersetzen Sie nichts, was keine URL ist. Ersetzen Sie also alles, was wie http://www.google.com oder http://google.com aussieht, aber nicht tag:google.com oder state/com.google.
- Das Verzeichnis classout (in Schritt 2 erstellt) enthält viele Dateien, von denen nur wenige geändert werden müssen – aber welche? Versuchen Sie es bei gReader mit diesen beiden:
com/noinnion/android/greader/reader/client/OldReaderClient.smali com/noinnion/android/greader/reader/client/OldReaderLoginActivity.smali
Bei anderen Apps können Sie die Suche nach „Ein Wort oder ein Ausdruck in der Datei“ (Windows) oder den Befehl „grep“ (Linux) verwenden.
Schritt 4: App packen und signieren
- Packen Sie die Datei classes.dex wieder ein:
java -Xmx512M -jar smali-2.0b6.jar classout/ -o classes.dex
- Öffnen Sie die APK-Datei in PeaZip. Löschen Sie das Verzeichnis META-INF aus dem Archiv und aktualisieren Sie das Archiv mit der geänderten Datei classes.dex.
- Erstellen Sie einen Schlüssel zum Signieren der App:
keytool -genkey -v -keystore my-reedah-key.keystore -alias myreedahkey -keyalg RSA -keysize 2048 -dname "CN=Android Reedah,O=Android Reedah,C=US" -validity 10000
Sie werden aufgefordert, ein Passwort festzulegen; wählen Sie ein beliebiges (z. B. „android“). - Signieren Sie die App:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-reedah-key.keystore -signedjar MY_REEDAH_APP.apk XXXX.apk myreedahkey
Ersetzen Sie hier XXXX.apk durch den Namen der geänderten APK. Sie werden nach dem Passwort gefragt, das Sie im vorherigen Befehl festgelegt haben. Dadurch wird MY_REEDAH_APP.apk erstellt – die App, die Sie auf Ihrem Android-Gerät installieren.
Schritt 5: App installieren
- Stellen Sie vor der Installation sicher, dass die Sicherheitseinstellungen Ihres Geräts die Installation nicht verhindern. Öffnen Sie Einstellungen – Sicherheit und aktivieren Sie „Unbekannte Herkunft“. Deinstallieren Sie außerdem alle unveränderten Versionen der App.
- Kopieren Sie die Datei MY_REEDAH_APP.apk auf Ihr Gerät. Am einfachsten ist es vermutlich, sie auf eine Website (etwa Dropbox) hochzuladen und mit dem Android-Browser herunterzuladen.
- Wenn die APK in Ihren Downloads erscheint, tippen Sie sie einfach an, um sie zu installieren.
Die häufigste Fehlerquelle sind Datenreste der nicht geänderten App. Wenn bei der Installation Probleme auftreten, öffnen Sie einen Terminal-Emulator, geben Sie „su“ ein und bestätigen Sie. Dann:
- Suchen Sie in /data/data nach den Daten der nicht geänderten App und entfernen Sie sie, z. B.
rm -rf /data/data/com.noinnion.android.greader.reader-1
- Laden Sie die App herunter, z. B.
wget -O /storage/sdcard0/MY_REEDAH_APP.apk http://dropbox.com/yourid/MY_REEDAH_APP.apk
- Installieren Sie die App, z. B.
cd /storage/sdcard0 ; adb install MY_REEDAH_APP.apk
Starten Sie nun die App. Beachten Sie, dass sie möglicherweise noch Google Reader (oder einen Ersatzdienst) nennt, obwohl sie das Reedah-Backend nutzt.
