Приложения для Android
Чтобы приложение для Android работало с Reedah, нужно выполнить несколько шагов: а) получить приложение, б) распаковать его, в) изменить его, г) упаковать и подписать его, д) установить его.
Шаг 1. Получение приложения
Вам понадобится копия приложения на компьютере (Windows или Linux). Получить её можно двумя способами:
- Загрузить его напрямую из интернета. Например, gReader можно получить на GitHub, или
- Установить его на устройство через Google Play и скопировать оттуда APK-файл. Например, gReader будет сохранён как /data/app/com.noinnion.android.greader.reader-1.apk.
Шаг 2. Распаковка приложения
Для этого шага вам понадобится следующее:
- Программа для упаковки и распаковки архивов (например, PeaZip, WinZip, WinRAR).
- Java Development Kit (JDK). Судя по отзывам, лучше всего этот способ работает с JDK 6.
- Smali и Baksmali, доступные на Github.
Когда всё это будет готово, выполните следующее:
- Откройте APK-файл (приложение) в PeaZip и извлеките файл classes.dex.
- В командной строке Windows (или в командной оболочке Linux) введите:
java -jar baksmali-2.0b6.jar -o classout/ classes.dex
Предполагается, что Java прописана в переменной PATH; пользователям Windows может понадобиться ввести, например:set PATH=%PATH%;"c:\program files\java\jdk1.6.0_45\bin"
Если вы загрузили другие версии JDK или baksmali, измените имена файлов соответствующим образом.
Шаг 3. Изменение приложения
Изменение приложения сводится к тому, чтобы заменить все ссылки на Google Reader (или его альтернативы) ссылками на Reedah. Для большинства приложений для Android это можно сделать с помощью поиска и замены в текстовом редакторе, например в «Блокноте» или WordPad.
Хотя идея и сам процесс просты, есть две сложности:
- Какой именно текст искать и на что заменять? Если приложение использует TheOldReader (это относится к версиям gReader начиная с июля):
- Замените все вхождения «theoldreader.com» на «www.reedah.com».
- Кроме того, поскольку TheOldReader не соответствует API Google Reader, найдите "?output=json" и замените на "?output=json&client=tor". В этом случае кавычки нужно включить в строку поиска.
- Замените все URL, содержащие «google.com», на «reedah.com».
- Не заменяйте то, что не является URL. Иными словами, нужно заменить всё, что выглядит как http://www.google.com или http://google.com, но не tag:google.com или state/com.google.
- В каталоге classout (созданном на шаге 2) будет много файлов, но изменить понадобится лишь некоторые из них. Какие именно? Для gReader попробуйте эти два:
com/noinnion/android/greader/reader/client/OldReaderClient.smali com/noinnion/android/greader/reader/client/OldReaderLoginActivity.smali
Для других приложений можно воспользоваться поиском по содержимому файлов (Windows) или командой «grep» (Linux).
Шаг 4. Упаковка и подписание приложения
- Снова упакуйте файл classes.dex:
java -Xmx512M -jar smali-2.0b6.jar classout/ -o classes.dex
- Откройте APK-файл в PeaZip. Удалите из архива каталог META-INF и обновите архив, добавив изменённый файл classes.dex.
- Создайте ключ для подписания приложения:
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
Вам будет предложено задать пароль; выберите любой (например, «android»). - Подпишите приложение:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-reedah-key.keystore -signedjar MY_REEDAH_APP.apk XXXX.apk myreedahkey
Здесь замените XXXX.apk именем изменённого APK-файла. Будет запрошен пароль, который вы задали предыдущей командой. В результате будет создан файл MY_REEDAH_APP.apk — это приложение, которое вы установите на устройство Android.
Шаг 5. Установка приложения
- Перед установкой приложения убедитесь, что настройки безопасности устройства её не запрещают. Откройте «Настройки» → «Безопасность» и включите параметр «Неизвестные источники». Также удалите все немодифицированные версии приложения.
- Скопируйте файл MY_REEDAH_APP.apk на устройство. Проще всего, пожалуй, разместить его на каком-нибудь сайте (например, в Dropbox) и загрузить через браузер Android.
- Если APK-файл появился в загрузках, просто нажмите на него, чтобы установить.
Чаще всего проблемы вызывают данные, оставшиеся от немодифицированного приложения. Если при установке возникают проблемы, откройте Terminal Emulator, введите «su» и подтвердите. Затем:
- Найдите в /data/data данные немодифицированного приложения и удалите их, например:
rm -rf /data/data/com.noinnion.android.greader.reader-1
- Загрузите приложение, например:
wget -O /storage/sdcard0/MY_REEDAH_APP.apk http://dropbox.com/yourid/MY_REEDAH_APP.apk
- Установите приложение, например:
cd /storage/sdcard0 ; adb install MY_REEDAH_APP.apk
Теперь запустите приложение. Учтите, что в нём по-прежнему может упоминаться Google Reader (или его замена), хотя на самом деле оно работает через сервер Reedah.
