![]() |
|
Модераторы: javastic, AntonSaburov |
![]()
|
|
| hamsterKSU |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 401 Регистрация: 20.10.2006 Где: Украина, Херсон Репутация: 7 Всего: 11 |
Привет
Вот возникла потребность компилить приложение с определенным кодом доступа. т.е. человек проходит по сслыке на приложение, ему компилиться приложение с кодом которы содержался в ссылке как это лучше сделать: 1) можно обюойтись без компиляции - генерить тхт фалик и паковать в jar, но както не секюрно, что ли. 2) использовать препроцессор - посоветйте какой может подойти 3) написать свою прогу, которую будут запускать из командной строки. она будет изменять нужную строчку в коде и компилить приложение. мне больше нравиться 2-й способ. но вот подобрать, что то нормальоне не могу. antena хотит фаликик спредефайнеными настройками. а собственно хотелосьб бы эту настройку передавать из консоли. Стандартного препроцессора в j2me sdk вроде нет, или я ошибаюсь? Спасибо |
|||
|
||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
а зачем препроцессор?
помойму легче всего написать скрипт, который подменит в xml нужный параметр и скормить его антенне. Добавлено через 3 минуты и 36 секунд мой коллега когда-то байткод парсил, надо было ужать приложение в 64 килобайта, а не выходило с помощью обфускатора, так он брал class файлы и каким-то чудом из ооп делал функциональное, все классы бросал в один функциями, причем работали даже instanceof и тп... так что можешь почитать про парсинг байткода =) Добавлено через 4 минуты и 44 секунды link -------------------- iOS developer |
|||
|
||||
| hamsterKSU |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 401 Регистрация: 20.10.2006 Где: Украина, Херсон Репутация: 7 Всего: 11 |
пасиб за ответ.
вто нашел еще - с Ant я работал но только поверхностно. так вот он могет заменять токены в файлах перед компяляцией. т.е. мы задаем параметр -Dcode=123 в build.xml пишем что заменть SECRET_CODE=1 на SECRET_CODE=${code} и отправляем на компиляцию, там главное нужный bootclass прописать. Это сообщение отредактировал(а) hamsterKSU - 13.11.2009, 02:49 |
|||
|
||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
=) ну да, действительно, я просто уже далек от джавы...
Это сообщение отредактировал(а) W0LF - 13.11.2009, 02:55 -------------------- iOS developer |
|||
|
||||
| eugine_s |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
Самый простой способ, конечно, это держать готовый jar, а генерировать только jad и в этот jad записывать требуемый код, но если стоит вопрос о секьюрности....
В свое время писал обвертку для игр, т.е. на вход подавалась игра, а на выходе получалась демо-версия этой игры. Механизм был такой: найти класс (и пакет, если есть), который унаследован от MIDlet (например, com.game.GameMidlet - брал обычно из манифеста), подставить в мою обвертку (класс DemoWrapper) этот класс. В исходном варианте DemoWrapper начинается вот так: public class DemoWrapper extends <Midlet> { } Задачей препроцессора была заменить <Midlet> на com.game.GameMidlet я думаю, тут понятно, что с помощью обычных j2se операций заменить одну строку на другую очень просто. Но есть пару нюансов: 1) твой код нужно откомпилить (это не очень сложно). можно использовать два варианта: а) вызывать внешнюю утилиту javac б) в java 6 есть класс javax.tools.JavaCompiler. Я в основном использовал JavaCompiler (javac только опционально). Возможно есть еще варианты (например, использую ant/antenna), но мне хватало двух других. 2) Откомпилированные классы для j2me должны проходить доп. этап - преверификацию. Тут тоже два варианта: а) вызывать утилиту из wtk preverify10/preverify11 б) в antenna для linux есть возможность преверификации. Я использовал внешнюю утилиту 3) Почему-то j2se пакеты для создания zip/jar архивов не подходили для создания мидлетов (мидлеты просто не запускались потом на телефоне), поэтому пришлось использовать внешнюю утилиту 7za (7zip) |
|||
|
||||
| hamsterKSU |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 401 Регистрация: 20.10.2006 Где: Украина, Херсон Репутация: 7 Всего: 11 |
спасибо всем.
а jad не подходит по одной простой причине - телефонам он не нужен для установки что бы вся идея с кодом не поломалась - придеться компилить с этим кодом. |
|||
|
||||
| eugine_s |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
||||
|
||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
насчет jad не всегда согласен, иногда по ошибке можно отправить не тот jar, так вот он скачается а потом не установится, поэтому-то и нужен jad, чтоб не тратился лишний трафик, просто у меня в свое время была такая проблема, трафик стоил 8гривен за метр и не всем было прикольно скачать, чтоб потом не установилось =)
-------------------- iOS developer |
|||
|
||||
![]()
|
FAQ раздела лежит здесь! |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |