Инструкция по созданию клонов программы AlReader:
Итак, наша задача создать копию программы АР, которую можно будет установить в системе одновременно с оригиналом. Для того чтобы Андроид позволил нам это сделать, необходимо убедить его, что оригинальный АР и наша копия — это две
разные программы. Расскажу сначала, что именно нам нужно изменить в коде, чтобы обмануть систему, затем — как это сделать, и наконец — как максимально автоматизировать процесс.
1. Андроид идентифицирует программу по названию пакета, в АР, это строка com.neverland.alreader, которая встречает в коде 28 раз, в файлах:
AndroidManifest.xml
res/values/strings.xml
res/xml/preference1.xml
res/xml/preference1_simple.xml
res/xml/preference2.xml
res/xml/preference2_simple.xml
res/xml/preference_level.xml
res/xml/preference_style.xml
res/xml/preference_touch.xml
res/xml/preference_touch_simple.xml
res/xml/preference_touch_wotouch.xml
res/xml/preference_tune.xml
res/xml/preference_tune_einc.xml
res/xml/preference_tune_simple.xml
res/xml/preference_tune_simple_einc.xml
res/xml/profile0.xml
res/xml/profile0_simple.xml
res/xml/profile0_simple0.xml
res/xml/profile1.xml
res/xml/profile1_simple.xml
res/xml/profile1_simple0.xml
res/xml/profile2.xml
res/xml/profile2_simple.xml
res/xml/profile2_simple0.xml
res/xml/profile3.xml
res/xml/profile3_simple.xml
res/xml/profile3_simple0.xml
Нужно заменить com.neverland.alreader на что-нибудь другое, например: com.neverland.alreader_1 (пробелы и символы юникода, полагаю, использовать не стоит) во всех этих файлах. Этого уже достаточно, чтобы система считала нашу копию программой отличной от оригинального АР, однако пользователю будет очень трудно отличить копию от оригинала. Поэтому, чтобы пользоваться было удобно, в копии стоит заменить также название программы и иконку.
Название программы прописано в двух файлах:
в файле AndroidManifest.xml (после текста android:label=" ) — название программы в меню/настройки/приложения, то есть там, где программы можно удалять.
в файле res/values/strings.xml (после текста <string name="app_name"> ) — название программы в списке программ, то есть там, где программы можно запускать.
В оригинале и там и там программа называется AlReader, в копии названия могут быть разными, причем в обоих можно использовать и пробелы и любые юникодные символы (проверено). Оба названия никак не влияют на идентификацию программы системой, то есть копию с названием AlReader_2 можно устанавливать поверх копии AlReader_1, если в обеих копиях название пакета: com.neverland.alreader_1.
За иконку программы отвечают пять файлов icon.png с разными разрешениями для разных разрешений экранов:
в папке res/drawable-ldpi — иконка с разрешением 36X36
в папке res/drawable-mdpi — иконка с разрешением 48X48
в папке res/drawable-hdpi — иконка с разрешением 72X72
в папке res/drawable-xhdpi — иконка с разрешением 96X96
в папке res/drawable-480dpi — иконка с разрешением 144X144
Нужно подготовить пять копий той иконки, которую Вы хотели бы видеть в формате png с соответствующими разрешениями, переименовать каждую в icon.png, и заменить оригиналы. Если Вы делаете клон
только для себя и знаете какое разрешение нужно для вашего экрана, Вы можете немного облегчить себе жизнь — сделать только одну иконку нужного разрешения и заменить ею все пять оригинальных иконок.
2. Поскольку все xml-файлы внутри apk находятся в компилированном виде, чтобы поменять интересующие нас строки, apk нужно декомпилировать, затем после замены — скомпилировать обратно и подписать. Расскажу сначала, как сделать эту вручную.
Нам понадобится прежде всего установленная на компьютере JAVA. Я скачивал ее вот с этой страницы:
http://www.oracle.com/technetwork/java/jav...ds-1859586.html Затем программа ApkTool, архив с программой можно скачать в конце этого сообщения. Программа не требует установки, просто распакуйте архив в удобную Вам папку (в названии папки и пути к ней не должно быть пробелов и символов юникода, и желательно, чтобы путь был не слишком длинным).
И наконец нам нужно будет пользоваться командной строкой: в Windows чтобы запустить ее нажмите кнопку «Пуск», затем «Выполнить», в открывшемся окошке набрать cmd и нажать OK. Также можно пользоваться Total Commander-ом с включенной коммандной строкой, это удобнее тем, что если Вы находитесь в папке с запускаемым файлом, Вам не нужно вводить полный путь.
Предположим, что Вы распаковали файлы ApkTool в папку apktool на диске C, а оригинальный apk АР (то есть файл AlReader3Activity.apk) — в папке AlReader на диске D (в пути, по которому лежит АР, разумеется, тоже не должно быть пробелов и символов юникода). Создаем клон в четыре этапа:
1. Декомпиляция: в командной строке набираем:
c:\apktool\apktool-d.cmd d:\AlReader\AlReader3Activity.apk
(то есть путь к файлу apktool-d.cmd, потом один пробел, потом путь к apk AlReader-а) и кнопку Enter. Дожидаемся надписи: All done! Теперь декомпилированные файлы АР находятся в папке d:\AlReader\AlReader3Activity.
2. Заменяем иконки на свои, заменяем все нужное в xml-файлах. Заменить имя пакета можно сразу в восьми файлах с помощью автозамены, например, с помощью бесплатной программы
Notepad++.
3. Компиляция: в командной строке набираем путь к файлу apktool-
b.cmd, пробел и путь к папке с отредактированными файлами AlReader-а:
c:\apktool\apktool-b.cmd d:\AlReader\AlReader3Activity
, дожидаемся надписи: All done! Теперь компилированный файл AlReader3Activity.apk находится в папке d:\AlReader\AlReader3Activity\dist Осталось только:
4. Подпись: путь к файлу Sign.cmd, пробел, путь к компилированному файлу:
c:\apktool\Sign.cmd d:\AlReader\AlReader3Activity\dist\AlReader3Activity.apk
, после надписи All done! рядом с компилированным файлом находится файл AlReader3Activity.signed.apk — все готово, это наш клон, можно устанавливать и настраивать :-)
3. Теперь о том, как все это сделать проще и быстрее. Все тот же архив, прикрепленный к этому сообщению, кроме apktool содержит также замечательный скрипт, написанный уважаемым
ama_007. Итак, файл оригинального АР AlReader3Activity.apk кладем в ту же папку, куда распаковали apktool и скрипт. В папке res есть подпапки drawable-ldpi, drawable-mdpi, drawable-hdpi, drawable-xhdpi, drawable-480dpi — в них надо разложить подготовленные Вами иконки, и папка values — туда надо положить файл strings.xml, с уже исправленным именем программы (файл этот лучше брать каждый раз новый из свежей версии, так как в разных версиях он не остается без изменений).
В командной строке пишем путь к скрипту, то есть файлу CopyAlReader.js, потом пробел, потом тот текст, который нужно добавить к имени пакета. Например, если Вы распаковали файлы ApkTool и скрипт в папку apktool на диске C, и ввели в командной строке текст:
c:\apktool\CopyAlReader.js _1
, Вы получите клон, в котором имя пакета будет — com.neverland.alreader_1, имя, отображаемое в «управлении приложениями» — AlReader_1, а имя в меню приложений — то, которое Вы прописали в файле strings.xml
Инструменты:
apktool_ama_007.zip ( 3.09 МБ )
Сообщение отредактировал Akemdwr - 30.10.13, 09:30