Итак, путем проб и ошибок я почти разобрался в принципе образования и использования настроек ява-приложениями...
С позволения
mobilefree обобщу все вышесказанное:
Оговорюсь сразу: подразумевается, что у вас стоят два патча - патч на яву (/tpa/preset/system/oaf/ -> /tpa/user/other/java) и патч на сейвы (tpa/system/java/db/ -> /tpa/user/other/java/db), таким образом в папке прочее должна быть папка java, а в ней помимо файлов *.jad и *.jar еще две - applist и db. Нужно это для того, чтобы необходимые файлы можно было вытащить обычным файлменеджером!
В папке db вложены четыре папки:
db
sec
settings
verif
Для нас представляют интерес только две: db и verif (в settings лежит файл javaprofile, в котором прописан интернет профиль, используемый ява-мидлетами; в папке sec лежит по файлу для каждого мидлета, причем все эти файлы совершенно одинаковы и имеют размер по 17 байт)
В папке verif тоже лежит по файлу для каждого мидлета и они тоже фиксированной длины (64 байта), однако они отличаются даже для одного и того же приложения, установленного в разное время (например, если удалить мидлет, а потом заново установить, то содержимое соответствующих им файлов в этой папке будет различным). Назначение этих файлов мне не совсем понятно, но все же при переносе старых настроек их желательно тоже заменять (кстати, так как эти файлы не имеют расширения, то при сохранении их через MyPhoneExplorer в качестве расширения дублируется имя файла и получается оно довольно длинным - порядка 29 знаков, поэтому при заливки обратно в телефон программа ругается и не хочет их копировать - будте внимательны)
В папке db, собственно, и находятся конфиги явы - файлы с расширением *.d либо *.r
Имена для файлов конфига (в папках db, sec и verif) образуются из имени ява-мидлета плюс, возможно, и еще из чего. Для сравнения:
j4f70657c6584324f706524077bab - имя для файла Opera_Mini.jar
j4f7065c242bd514f706524077bab - имя для файла Opera_Mini_1_20.jar
Причем, так как в папке db может быть несколько файлов для одного приложения, то к основному имени добавляется еще одна цифра - порядковый номер файлика.
Далее, в папке applist лежит еще один очень важный для нас файлик - suites.dat. Из него мы можем сопоставить имя файлов конфига и мидлета, которому они соответствуют. В нем же записана информация об именах файлов конфига (и их количестве на данный момент) для каждого приложения! И записана эта информация в неявном виде, т.е. ручками не подправишь... Это и составляет основную сложность для переноса сейвов!
Таким образом, если ява-приложение хранит все свои настройки в одном файле, то достаточно подменить соответствующие файлы в папках db и verif. Если таких файлов несколько (далее речь пойдет о файлах только в папке прочее\java\db\db, так как именно в ней хранятся файлы настроек), то все уже сложнее: может получиться, что в backup'е у нас файлов 5 для данного приложения, а в телефоне их всего 2, тогда простая замена существующих и дозапись нехватающих файлов не поможет - в лучшем случае настройки будут восстановлены наполовину, в худшем (если имя файла не соответствует содержимому) просто будут созданы файлы со "свободными порядковыми номерами"
Происходит это по двум причинам:
1) Когда приложение использует несколько файлов для хранения своих настроек - они (файлы настроек) не создаются все сразу, а по мере необходимости: например, в Опере... запустив в первый раз, мы воспользовались лишь поиском через Google и не вводили ни одного адреса - создается файлик с историей, затем мы ввели адрес - создается файлик с адресами и т.п. Вполне возможен и иной порядок: сначала адреса, потом история...
2) А ведь все в том же файле suites.dat прописано сколько файлов конфига должно быть и под какими номерами... Мы и сами можем нарушить порядок, например, имеется файлы с порядками 0 и 1, мы создали файлик с порядком 2, тогда когда придет время для создания следующего файла настроек, окажется, что "место" 2 уже занято и будет создан файл с порядком 3...
В этом случае можно заменять все файлы скопом - всю папку java (для всех приложений, установленных ранее), что не совсем удобно и рацианально. Либо, если все же количество файлов конфига в backup'е и телефоне совпадает (можно также попробовать уровнять количество пройдя один уровень или поставив какой-нибудь параметр настройках), то есть вероятность, что настройки лягут гладко. Либо самому определить, в каком файлике хранятся необходимые настройки (допустим, адреса для оперы - можно через блокнот просмотреть) и заменить именно его.
Ну вот, вроде постарался максимально подробно и понятно описать схему восстановления настроек ява-приложений, но тем не менее эта процедура осталась весьма неудобной... но, я считаю, это все-таки удобней, чем вбивать настройки (а особенно адреса и закладки Оперы) через телефон или заново проходить игру до с трудом достигнутого уровня
В заключение скажу лишь, что файлы в папках db и verif создаются только после первого запуска установленного ява-приложения.
P.S. Так как патч на сейвы в моем случае немного отличается от
mobilefree (IMHO, лучше пусть все будет в одной папке), то значения
2F007400700061002F007000720065007300650074002F00730079007300740065006D002F006A006100760061
/tpa/system/java/db/
нужно менять на
2F007400700061002F0075007300650072002F006F0074006800650072002F006A006100760061002F00640062
/tpa/user/other/java/db