Applications Android
Pour qu’une application Android fonctionne avec Reedah, plusieurs étapes sont nécessaires : (a) obtenir l’application, (b) la décompresser, (c) la modifier, (d) la recompresser et la signer, (e) l’installer.
Étape 1 : obtenir l’application
Vous avez besoin d’une copie de l’application sur votre ordinateur (Windows ou Linux). Deux façons de l’obtenir :
- La télécharger directement sur le web. Par exemple, gReader est disponible sur GitHub, ou
- L’installer sur votre appareil depuis Google Play, puis en copier le fichier APK. Par exemple, gReader est enregistré sous /data/app/com.noinnion.android.greader.reader-1.apk.
Étape 2 : décompresser l’application
Pour cette étape, vous aurez besoin des éléments suivants :
- Un outil de compression et de décompression (par exemple PeaZip, WinZip, WinRAR).
- Le Java Development Kit (JDK). Cette méthode fonctionnerait au mieux avec le JDK 6.
- Smali et Baksmali, disponibles sur Github.
Une fois ces prérequis réunis, procédez comme suit :
- Ouvrez le fichier APK (l’application) avec PeaZip et extrayez le fichier classes.dex.
- Dans une invite de commandes Windows (ou un shell Linux), tapez :
java -jar baksmali-2.0b6.jar -o classout/ classes.dex
Cela suppose que Java se trouve dans votre PATH ; sous Windows, il peut être nécessaire de taper (par exemple)set PATH=%PATH%;"c:\program files\java\jdk1.6.0_45\bin"
Si vous avez téléchargé d’autres versions du JDK ou de baksmali, adaptez les noms de fichiers en conséquence.
Étape 3 : modifier l’application
Modifier l’application consiste à remplacer toutes les références à Google Reader (ou à d’autres alternatives) par des références à Reedah. Pour la plupart des applications Android, un rechercher-remplacer dans un éditeur de texte comme le Bloc-notes ou WordPad suffit.
Si le principe et la démarche sont simples, deux difficultés se présentent :
- Quel texte faut-il exactement rechercher et remplacer ? Si l’application utilise TheOldReader (ce qui est le cas des versions de gReader depuis juillet) :
- Remplacez toutes les occurrences de « theoldreader.com » par « www.reedah.com ».
- De plus, comme TheOldReader n’est pas conforme à l’API Google Reader, recherchez "?output=json" et remplacez-le par "?output=json&client=tor". Dans ce cas, les guillemets doivent être inclus dans la recherche.
- Remplacez toutes les URL contenant « google.com » par « reedah.com ».
- Ne remplacez pas ce qui n’est pas une URL. Autrement dit, remplacez tout ce qui ressemble à http://www.google.com ou http://google.com, mais pas tag:google.com ni state/com.google.
- Le répertoire classout (créé à l’étape 2) contiendra de nombreux fichiers, dont seuls quelques-uns devront être modifiés. Lesquels ? Pour gReader, essayez ces deux-là :
com/noinnion/android/greader/reader/client/OldReaderClient.smali com/noinnion/android/greader/reader/client/OldReaderLoginActivity.smali
Pour d’autres applications, vous pouvez rechercher « un mot ou une expression dans le fichier » (Windows) ou utiliser la commande « grep » (Linux).
Étape 4 : recompresser et signer l’application
- Recompressez le fichier classes.dex :
java -Xmx512M -jar smali-2.0b6.jar classout/ -o classes.dex
- Ouvrez le fichier APK dans PeaZip. Supprimez le répertoire META-INF de l’archive, puis mettez à jour l’archive avec le fichier classes.dex modifié.
- Créez une clé pour signer l’application :
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
Vous serez invité à créer un mot de passe ; choisissez celui que vous voulez (par exemple « android »). - Signez l’application :
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-reedah-key.keystore -signedjar MY_REEDAH_APP.apk XXXX.apk myreedahkey
Remplacez ici XXXX.apk par le nom de l’APK modifié. Le mot de passe créé lors de la commande précédente vous sera demandé. Le fichier MY_REEDAH_APP.apk sera alors créé : c’est l’application que vous allez installer sur votre appareil Android.
Étape 5 : installer l’application
- Avant d’installer l’application, vérifiez que les paramètres de sécurité de votre appareil ne l’empêcheront pas. Accédez à Paramètres > Sécurité et assurez-vous que l’option « Sources inconnues » est cochée. Désinstallez également toute version non modifiée de l’application.
- Copiez le fichier MY_REEDAH_APP.apk sur votre appareil. Le plus simple est sans doute de le placer sur un site web (comme Dropbox) et de le télécharger avec le navigateur Android.
- Si l’APK apparaît dans vos téléchargements, il suffit de cliquer dessus pour l’installer.
Les problèmes proviennent le plus souvent de données résiduelles de l’application non modifiée. En cas de problème à l’installation, ouvrez un Terminal Emulator, tapez « su » et confirmez. Ensuite :
- Dans /data/data, supprimez les données de l’application non modifiée, par exemple
rm -rf /data/data/com.noinnion.android.greader.reader-1
- Téléchargez l’application, par exemple
wget -O /storage/sdcard0/MY_REEDAH_APP.apk http://dropbox.com/yourid/MY_REEDAH_APP.apk
- Installez l’application, par exemple
cd /storage/sdcard0 ; adb install MY_REEDAH_APP.apk
Lancez maintenant l’application. Notez qu’elle peut encore faire référence à Google Reader (ou à un remplaçant) alors qu’elle utilise le serveur de Reedah.
