| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java ME (J2ME) > Завернуть jar файл |
| Автор: Randomm 21.11.2009, 16:36 |
| Здравствуйте Хотелось бы узнать у опытных людей, возможно ли осуществить такое: Для готового приложения для телефона в виде .jar файла нужно сделать так, чтобы при первом его запуске на телефоне нужно было его "активировать" - то есть прочитать правила и согласиться с ними или отправить смс или что-то ещё. Возможно ли создать такую обёртку для произвольного приложения и так же оформить её jar файлом? |
| Автор: Green_DiCk 21.11.2009, 19:54 | ||
Если есть исходники "произвольного приложения" то ноу проблем. Пишешь свой "защитный" класс, потом в методе startApp() делаешь что-нибудь вроде:
Проверить активировано приложение или нет можно или отправив запрос на сервер (в запросе должны быть уникальные для данной трубки данные) или проверив RMS на наличие соотв. записи. |
| Автор: Randomm 21.11.2009, 23:51 |
| Green_DiCk, спасибо. А если исходников нет? Можно ли как-то запаковать нужный jar и запускать его из оболочки? |
| Автор: Green_DiCk 22.11.2009, 13:36 |
| Если нет исходников, то можно попробовать декомпиляцию - декомпилировать главный класс мидлета, изменить метод startApp по описанной выше схеме и скомпилировать заново. Правда я декомпиляцией никогда не занимался, поэтому не знаю - может быть все не так просто. Хотя явных препятствий такому способу я тоже не вижу. |
| Автор: math64 23.11.2009, 08:49 |
| Можно добавить свой мидлет, производный от уже существующего. В его startApp () вставить предложенный код, вместо launch() - super.startApp (). Из манифеста и jad убрать исходый мидлет и вместо него добавить свой. Иногда так может не получиться, да и взломать просто - нужно найти класс оригинального мидлета. |
| Автор: eugine_s 23.11.2009, 14:05 |
| math64, согласен. Я так и делал. Такое может не получится если: 1) Класс унаследованный от MIDlet объявлен как final. Вопрос решался изменением одного байта в .class файле. Вот http://forum.vingrad.ru/index.php?showtopic=202810&view=findpost&p=1456667 мне советуют как можно это исправить. 2) Класс унаследованный от MIDlet не находится в каком-либо пакете (а твоя обвертка находится в пакете). Лечится тем что твоя обвертка делается без пакета. Я startApp не переопределял, а в конструкторе запускал отдельный поток, который и делал все что нужно. |
| Автор: podzamkom 23.11.2009, 15:25 |
| Позвольте напомнить еще один вариант - создание из файла мидлета *.jar защищенного файла с расширением *.dcf при помощи программы DRM упаковщика, например DRM Packager. Программа создает защищенный файл *.dcf и файл прав *.dd , которые (права) пользователь получит через интернет с сервера указанного в защищенном файле. Вся процедура автоматизирована и телефоны (современные) поддерживают этот протокол. Подробнее не могу сказать, но на форуме есть ветка с одноименным названием. Если кто может к этому что-либо добавить, милости просим! |
| Автор: eugine_s 24.11.2009, 14:51 | ||
Собственно, про реализацию этого момента забыл упомянуть. Конечно же, муть может какая-то получиться, если обвертку еще от Runnable наследовать, поэтому сделал это через внутренний класс. Что-то типа вот такого:
|