Yevg001 писал(а): Если ты когда нибудь доедешь где я буду, то с меня пиво.
Я запомню....
Итак, сегодня нам предстоит сложная хирургическая операция. Большую часть процеса, я автоматизировал, но тем не менее нужно внимательно следить за тем, что происходит, иначе пациент никогда не очется от наркоза (уйдет в циклическую загрузку). Все что будет описано, предназначается и было испытано на HTC Desire, Froyo 2.2 Sense (
Deodexed Rom). Читайте мануалы Ваших ромов, чтобы выяснить верию рома, который у Вас установлен (Deodexed или Оdexed). Можно проверить это дело с помощью андроид коммандера, зайти в папку /system/framework и проверить наличие файла framework.jar. Если он на месте значит этот мануал для Вас, а если вместо него будет framework.odex - значит Вам просто не повезло... этот мануал Вам не подходит.
Подготовка орудия пыток:
Скачиваем архив
HTC_Desire_Hebrew_Fix.zip и распаковываем его на десктопе вашего компа, к которому будет подключен девайс для правки мозгов.
Подчеркиваю архив должен быть на десктопе, а не в каком-нибудь другом месте, иначе скрипты, которые я написал, не будут работать... и как следствие у Вас ничего не получится. Проверить, что нужная папка находится на Десктопе после распаковки можно запустив из Run Menu команду
Код: Выделить всё
%userprofile%\Desktop\HTC_Desire_Hebrew_Fix
Знаю, знаю... я параноик, но понимая что может произойти если что-то пойдет не так... лучше перестраховаться.
Подготовка операционной комнаты и введение наркоза пациенту:
1. Девайс должен иметь рут (или быть рутованным,- кому как угодно), а также clockwork recovery, который обычно устанавливается, когда Вы делаете рут девайсу.
2. На Вашем компе должны быть установлены драйвера ADB для Вашего девайса - те самые, которые использовались для получения рута.
3. Должна быть в наличии утилита adb.exe из состава ADB-SDK toolset.
4. В Вашей системе должна быть установлена Java. Проверить можно следующим образом. Идем в C:\Program Files и находим там папку Java.
Если папка на месте, тогда все в порядке. Если нет, нужно установить Java на Ваш комп.
Теперь нужно прописать путь для модулей Java в System Variables. У меня виндовс 7, на других системах процедура схожая:
Код: Выделить всё
Start -> Control Panel -> System -> 'Advanced System Settings -> Environment Variables
В окне System Variables находим строку Path:

- htc_hebrew.JPG (44.18 КБ) 13290 просмотров
И делаем двойной клик на ней. Двигаемся с помощью мышки в конец этой строки и добавляем туда следующую инфу:

- htc_hebrew1.JPG (18.47 КБ) 13290 просмотров
Закрываем все окна. Изменения, которые мы сделали, вступают в силу без необходимости делать рестарт.
5.
Обязательно нужно сделать Нандроид бэкап перед тем как делать какие-либо изменения. Если что-то пойдет не так, Вы всегда сможете восстановиться!
Вводим пациенту наркоз:
Выключаем Ваш девайс и загружем его в Recovery Mode. Подключаем его к
матрице компу, и проверяем есть контакт или нет:
Запусакем утилиту cmd.exe с правами администратора, в ней, с помощью команды cd переходим в папку, где у Вас находится adb.exe и выполняем команду:
Если все в порядке вывод будет примерно таким:

- 1.JPG (31.13 КБ) 13290 просмотров
Ну и текстовый вариант:
Код: Выделить всё
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb devices
List of devices attached
HT07XPL01874 recovery
ЗЫ. Я в каждый скрипт добавил команду пауза, чтобы Вы на каждом шаге смогли сверить все ли у Вас идет как нужно (помним о циклическом ребуте...)
Поэтому и в дальнейшем я буду выкладывать скриншет с окна cmd.exe + полный вариан текста, как результат работы скрипта.
Подготовка закончена,- медперсонал, я надеюсь, в сборе, инструменты приготовлены, пациент доведен до нужной кондиции...
А сейчас перекур (или 100 грамм для храбрости).
Надравшись вдрыЗг и забыв про больного под наркозом Приведя себя в порядок и успокоив нервишки, приступаем к вскрытию...
Первым делом инсталируем всевозможные фонты в систему, которые поддерживают Иврит. Да, правильно, у нас уже есть фонты для поддержки Иврита, но дополнительные фонты никогда не бывают лишними... Для этой цели запускаем (с правами администратора) из папки HTC_Desire_Hebrew_Fix файл
Install fonts.bat:

- 2.JPG (75.51 КБ) 13261 просмотр
Техт вывода в окне коммандной строки:
Код: Выделить всё
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe kill-server
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe shell mount /system
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe push C:\Users\Igor\Desktop\H
TC_Desire_Hebrew_Fix\fonts\DroidSans-Bold.ttf /system/fonts/
1061 KB/s (130412 bytes in 0.120s)
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>DroidSans-Bold.ttf
'DroidSans-Bold.ttf' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe push C:\Users\Igor\Desktop\H
TC_Desire_Hebrew_Fix\fonts\DroidSans.ttf /system/fonts/DroidSans.ttf
1545 KB/s (126648 bytes in 0.080s)
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe push C:\Users\Igor\Desktop\H
TC_Desire_Hebrew_Fix\fonts\DroidSansFallback.ttf /system/fonts/
1941 KB/s (3022632 bytes in 1.520s)
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>DroidSansFallback.ttf
'DroidSansFallback.ttf' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe push C:\Users\Igor\Desktop\H
TC_Desire_Hebrew_Fix\fonts\DroidSansMono.ttf /system/fonts/
1175 KB/s (84244 bytes in 0.070s)
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>DroidSansMono.ttf
'DroidSansMono.ttf' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe push C:\Users\Igor\Desktop\H
TC_Desire_Hebrew_Fix\fonts\DroidSerif-Bold.ttf /system/fonts/
1636 KB/s (150780 bytes in 0.090s)
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>DroidSerif-Bold.ttf
'DroidSerif-Bold.ttf' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe push C:\Users\Igor\Desktop\H
TC_Desire_Hebrew_Fix\fonts\DroidSerif-BoldItalic.ttf /system/fonts/
1488 KB/s (137212 bytes in 0.090s)
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>DroidSerif-BoldItalic.ttf
'DroidSerif-BoldItalic.ttf' is not recognized as an internal or external command
,
operable program or batch file.
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe push C:\Users\Igor\Desktop\H
TC_Desire_Hebrew_Fix\fonts\DroidSerif-Italic.ttf /system/fonts/DroidSerif-Italic
.ttf
1515 KB/s (155220 bytes in 0.100s)
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe push C:\Users\Igor\Desktop\H
TC_Desire_Hebrew_Fix\fonts\DroidSerif-Regular.ttf /system/fonts/DroidSerif-Regul
ar.ttf
1532 KB/s (141252 bytes in 0.090s)
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe push C:\Users\Igor\Desktop\H
TC_Desire_Hebrew_Fix\fonts\LICENSE.txt /system/fonts/LICENSE.txt
686 KB/s (14055 bytes in 0.020s)
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe shell umount /system
Далее нам нужно вытащить из системы файл framework.jar, который и является виновником торжества. Этот файл, к сожалению, меняется от ядра к ядру, поэтому его невозможно сделать универсальным и использовать на всех прошивках. Для этой цели запускаем из папки HTC_Desire_Hebrew_Fix файл
Get framework.jar.bat. Скрипт также делает бэкап оригинальному файлу framework.jar, который можно потом найти в папке backup.

- 3.JPG (61.32 КБ) 13261 просмотр
Текст вывода в окне коммандной строки:
Код: Выделить всё
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe kill-server
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe shell mount /system
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe pull /system/framework/frame
work.jar "C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix"
1839 KB/s (3616103 bytes in 1.920s)
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>copy framework.jar "C:\Users\Igor\De
sktop\HTC_Desire_Hebrew_Fix/backup"
1 file(s) copied.
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe shell umount /system
Сейчас нам нужно, вытащить из файла framework.jar архив с именем classes.dex. Далее этот архив распаковывается с помощью специального модуля в папку classes, затем внутри этой папки заменяются несколько файлов и в конце процедуры файлы framework.jar и classes.dex удаляются за ненадобностью. Это самый ответственный момент операции Ы, поэтому я настоятельно рекомендую сверять вывод в окне ком. строки, который Вы получите, с тем что есть здесь. Все выше описанное делает файл
Patching framework.bat:

- 4.JPG (74.19 КБ) 13261 просмотр
Вывод в окне коммандной строки:
Код: Выделить всё
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>unzip.exe framework.jar classes.dex
Archive: framework.jar
inflating: classes.dex
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>echo Wait! It take some time to be d
one!
Wait! It take some time to be done!
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>java -jar baksmali-1.2.2.jar -o clas
ses classes.dex
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>Set "sourcefolder=C:\Users\Igor\Desk
top\HTC_Desire_Hebrew_Fix\files"
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>Set "destinationfolder=C:\Users\Igor
\Desktop\HTC_Desire_Hebrew_Fix\classes"
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>XCopy /y "C:\Users\Igor\Desktop\HTC_
Desire_Hebrew_Fix\files\froyo\Layout*" "C:\Users\Igor\Desktop\HTC_Desire_Hebrew_
Fix\classes\android\text"
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix\files\froyo\Layout$Alignment.smali
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix\files\froyo\Layout$Directions.smali
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix\files\froyo\Layout$Ellipsizer.smali
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix\files\froyo\Layout$SpannedEllipsizer
.smali
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix\files\froyo\Layout.smali
5 File(s) copied
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>XCopy /y "C:\Users\Igor\Desktop\HTC_
Desire_Hebrew_Fix\files\froyo\StaticLayout.smali" "C:\Users\Igor\Desktop\HTC_Des
ire_Hebrew_Fix\classes\android\text"
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix\files\froyo\StaticLayout.smali
1 File(s) copied
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>XCopy /y "C:\Users\Igor\Desktop\HTC_
Desire_Hebrew_Fix\files\froyo\sense\Layout*" "C:\Users\Igor\Desktop\HTC_Desire_H
ebrew_Fix\classes\android\text"
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix\files\froyo\sense\Layout$Alignment.s
mali
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix\files\froyo\sense\Layout$Directions.
smali
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix\files\froyo\sense\Layout$Ellipsizer.
smali
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix\files\froyo\sense\Layout$SpannedElli
psizer.smali
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix\files\froyo\sense\Layout.smali
5 File(s) copied
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>XCopy /y "C:\Users\Igor\Desktop\HTC_
Desire_Hebrew_Fix\files\froyo\sense\StaticLayout.smali" "C:\Users\Igor\Desktop\H
TC_Desire_Hebrew_Fix\classes\android\text"
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix\files\froyo\sense\StaticLayout.smali
1 File(s) copied
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>XCopy /y "C:\Users\Igor\Desktop\HTC_
Desire_Hebrew_Fix\files\froyo\Canvas*" "C:\Users\Igor\Desktop\HTC_Desire_Hebrew_
Fix\classes\android\graphics"
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix\files\froyo\Canvas$EdgeType.smali
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix\files\froyo\Canvas$VertexMode.smali
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix\files\froyo\Canvas.smali
3 File(s) copied
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>del framework.jar
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>del classes.dex
Теперь нам нужно запаковать содержимое папки classes обратно в файл classes.dex, который в свою очередь будет запакован внутрь вновь созданного файла framework.jar.
Для выполнения этой процедуры запускаем файл
Recompiling framework.bat

- 5.JPG (48.21 КБ) 13260 просмотров
Вывод в окне коммандной строки:
Код: Выделить всё
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>echo Patching, Recompiling framework
. Sorry, this takes even longer...
Patching, Recompiling framework. Sorry, this takes even longer...
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>java -Xmx512M -jar smali-1.2.2.jar c
lasses -o classes.dex
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>zip -1 framework.jar classes.dex
adding: classes.dex (152 bytes security) (deflated 54%)
Ну и в конце, когда у нас есть готовый файл framework.jar, его нужно запихнуть обратно в систему. Для этого нам понадобится файл
Pushing framework.jar to HTC.bat:
Не забываем запускать его из-под администратора...

- 6.JPG (58.34 КБ) 13260 просмотров
Вывод в окне коммандной строки:
Код: Выделить всё
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe kill-server
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe shell mount /system
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe push C:\Users\Igor\Desktop\H
TC_Desire_Hebrew_Fix\framework.jar /system/framework/framework.jar
1944 KB/s (3922492 bytes in 1.970s)
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>adb.exe shell umount /system
C:\Users\Igor\Desktop\HTC_Desire_Hebrew_Fix>del classes.dex
На этом все! Можно выводить пациента из состояния наркоза,- на девайсе мы все еще в режиме рековери, выбираем опцию перезагрузки.
ЗЫ. Первая загрузка может взять от 10 до 20 минут (оно и понятно - из состояния наркоза ведь выходим...

), в зависимости от загружености вашего девайса. В процессе долгой загрузки будет произведено рекеширование в разделе системного кэша (извиняюсь за каламбур) и проверка/обновление далвик кэша.