Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> изменения сырцов и компиляция из командной строки, надо зашивать коды в приложение 
V
    Опции темы
hamsterKSU
Дата 13.11.2009, 02:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: 7
Всего: 11



Привет

Вот возникла потребность компилить приложение с определенным кодом доступа.
т.е. человек проходит по сслыке на приложение, ему компилиться приложение с кодом которы содержался в ссылке

как это лучше сделать:

1) можно обюойтись без компиляции - генерить тхт фалик и паковать в jar, но както не секюрно, что ли.
2) использовать препроцессор - посоветйте какой может подойти
3) написать свою прогу, которую будут запускать из командной строки. она будет изменять нужную строчку в коде и компилить приложение. 

мне больше нравиться 2-й способ. но вот подобрать, что то нормальоне не могу.

antena хотит фаликик спредефайнеными настройками.
а собственно хотелосьб бы эту настройку передавать из консоли.

Стандартного препроцессора в j2me sdk вроде нет, или я ошибаюсь?

Спасибо
PM MAIL ICQ   Вверх
W0LF
Дата 13.11.2009, 02:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



а зачем препроцессор?
помойму легче всего написать скрипт, который подменит в xml нужный параметр и скормить его антенне.

Добавлено через 3 минуты и 36 секунд
мой коллега когда-то байткод парсил, надо было ужать приложение в 64 килобайта, а не выходило с помощью обфускатора, так он брал class файлы и каким-то чудом из ооп делал функциональное, все классы бросал в один функциями, причем работали даже instanceof и тп...
так что можешь почитать про парсинг байткода =)

Добавлено через 4 минуты и 44 секунды
link


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
hamsterKSU
Дата 13.11.2009, 02:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: 7
Всего: 11



пасиб за ответ.

вто нашел еще - с Ant я работал но только поверхностно.

так вот он могет заменять токены в файлах перед компяляцией.

т.е. мы задаем параметр -Dcode=123
в build.xml пишем что заменть SECRET_CODE=1 на SECRET_CODE=${code} и отправляем на компиляцию, там главное нужный bootclass прописать. smile


Это сообщение отредактировал(а) hamsterKSU - 13.11.2009, 02:49
PM MAIL ICQ   Вверх
W0LF
Дата 13.11.2009, 02:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



=) ну да, действительно, я просто уже далек от джавы...

Это сообщение отредактировал(а) W0LF - 13.11.2009, 02:55


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
eugine_s
Дата 13.11.2009, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

Репутация: 17
Всего: 17



Самый простой способ, конечно, это держать готовый jar, а генерировать только jad и в этот jad записывать требуемый код, но если стоит вопрос о секьюрности....

Цитата(hamsterKSU @  13.11.2009,  02:29 Найти цитируемый пост)
2) использовать препроцессор - посоветйте какой может подойти

В свое время писал обвертку для игр, т.е. на вход подавалась игра, а на выходе получалась демо-версия этой игры. Механизм был такой: найти класс (и пакет, если есть), который унаследован от 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)  


PM MAIL   Вверх
hamsterKSU
Дата 15.11.2009, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 401
Регистрация: 20.10.2006
Где: Украина, Херсон

Репутация: 7
Всего: 11



спасибо всем.

а jad не подходит по одной простой причине - телефонам он не нужен для установки smile достаточно только jar.
что бы вся идея с кодом не поломалась - придеться компилить с этим кодом.

PM MAIL ICQ   Вверх
eugine_s
Дата 15.11.2009, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

Репутация: 17
Всего: 17



Цитата(hamsterKSU @  15.11.2009,  01:27 Найти цитируемый пост)
а jad не подходит по одной простой причине - телефонам он не нужен для установки


Если так, тогда вместо jad можно использовать манифест - он в jar-e всегда есть.
При использовании манифеста, вопросы препроцессинга и компиляции отпадают. 


PM MAIL   Вверх
W0LF
Дата 15.11.2009, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



насчет jad  не всегда согласен, иногда по ошибке можно отправить не тот jar, так вот он скачается а потом не установится, поэтому-то и нужен jad, чтоб не тратился лишний трафик, просто у меня в свое время была такая проблема, трафик стоил 8гривен за метр и не всем было прикольно скачать, чтоб потом не установилось =)


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0579 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.