среда, 9 февраля 2011 г.

Как я восстанавливал java-приложения на Nokia 6125.

В один прекрасный момент прошивка на моем Nokia 6125 приказала долго жить, телефон при помощи бубна получилось перепрошить, но все приложения, которые я скачал из интернета и перенес на флешку теперь опознавались как неизвестные. Телефон предлагал их удалить, чтобы место не занимали. Такая перспектива меня не радовала, потому что настройки терять не хотелось. Я таки нашел решение своей проблемы.

Просмотрев jar-файл в hex-редакторе я не нашел стандартной сигнатуры zip-архива. Все настройки приложений хранятся в нескольких файлах с расширением "RMS". К каждому приложению был jad-файл с описанием. Из него можно выдрать ссылку на исходный jar-файл, что я и сделал.
Для приложения MobileNews, которое позволяет читать новости с NNTP-серверов jad-файл выглядит примерно так:

Manifest-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MIDlet-Name: MobileNews
Created-By: 1.4.2_03 (Sun Microsystems Inc.)
MIDlet-Vendor: [wl]
MIDlet-1: MobileNews, icons/MobileNews.png, newsclient.MobileNews
MIDlet-Version: 1.01
MicroEdition-Profile: MIDP-2.0
MIDlet-Jar-URL: http://www.smpda.com/midlets/MobileNews_rus.jar
MIDlet-Jar-Size: 67731
Здесь все просто: полная ссылка на jar-файл находится в параметре "MIDlet-Jar-URL". Бывают случаи сложнее, когда ссылку надо получать другим способом. Например для Jimm Multi jar-файл такой:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: Jimm Project
MIDlet-Name: Jimm Multi
MIDlet-Version: 0.6.4
MIDlet-Vendor: Jimm Project
MIDlet-Jar-Size: 483778
MIDlet-Jar-URL: Jimm.jar
MIDlet-Icon: icon.png
MicroEdition-Profile: MIDP-2.0
MicroEdition-Configuration: CLDC-1.0
MIDlet-Description: J2ME IM-client
MIDlet-Info-URL: http://m.jimm.net.ru/
MIDlet-1: Jimm Multi,/icon.png,jimm.Jimm
Jimm-Version: 0.6.4m
Jimm-Date: 23.10.2010
Background: True
FlipInsensitive: True
Nokia-MIDlet-On-Screen-Keypad: no
Nokia-MIDlet-Category: Application
Nokia-MIDlet-No-Exit: true
LGE-MIDlet-On-Screen-Keypad: no
LGE-MIDlet-Allowed-background: yes
LGE-MIDlet-Exit: minimize
T: MIDlet-Touch-Support: true
Nokia-Update: http://storage.jimm.net.ru/projects/multi/builds/build-10.10.23/Midp2full/Jimm.jad
Тут получаем ссылку с помощью замены "jad" на "jar" в ссылке из параметра "Nokia-Update".
Короче, исходный файл мы получили. Теперь достаточно заменить "поврежденный" jar-файл тем, который мы только что скачали и попытаться запустить то, что получилось.
У меня таким образом не заработала только Opera Mini 4.