Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Генерация мидлета на сервере "на лету"


Автор: egis 8.9.2011, 08:36
Здравствуйте. Имеется мидлет исходник. Нужно исходя из него, меняя в нем пару строчек на сервере с помощью пхп генерировать на лету новые мидлеты с новым названием. 

Как это осуществить на удаленном сервере на платформе  linux?

Очень нужна ваша помощь, спасибо.

Автор: egis 8.9.2011, 18:46
Подскажите, как на сервере линукс скомпилировать мидлет из командной строки?

Автор: PiyodaiSiyo 10.9.2011, 01:42
я так думаю мало кто под линукс  j2me sdk ставил. обычно это для серверов(многопоточность). ну как путь то скорее всего надо,как ее там,   ant ом с sdk под эту ОС.. с антом раз помучатся а потом кайф.

Автор: math64 26.9.2011, 15:56
Лучше переписать код так, чтобы исходники не менялись, а менялись только файлы ресурсов.
Тогда из пхп нужно уметь только делать zip файл.
Нужно заменить число или строку - создаёшь кофигурационный файл или добавляешь пользовательские параметры в манифест и считываешь их при старте мидлета.
Нужно поменять что-то более сложное? В таком случае обычно зараннее известно, что нужно менять.
Например, один код для Нокиа, другой для Самсунг. Подготавливаешь два варианта исходников и собираешь jar из тех, которые нужны в данном случае.

Автор: ivanovpv 27.9.2011, 08:45
Ума не приложу кому и зачем это нужно... Ну если уж и нужно то сделать можно. Делаем примерно так:
1) Устанавливаем на серваке WTK (для тех кто совсем в танке http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javame-419430.html#sun_java_wireless_toolkit-2.5.2_01b-oth-JPR). Для продвинутых замечу, что Sun ME SDK 3.0 не подойдет, поскольку он не работает под Linux
2) Там же устанавливаем ANT. Для тех кто в танке - http://ant.apache.org/
3) Пишем билд для Анта. Если непонятно - то http://archive.javapronews.com/javapronews-47-20030611J2MEUsingAntwithJ2ME.html
4) Далее под PHP генерируем мидлет 
5) Напускаем ANT на сгенерированные исходники
6) Получаем JAR
7) И задаем себе вопрос: на хрена?  smile 

Автор: math64 27.9.2011, 13:54
Как раз зачем - понятно. Пользователь выбирает модель телефона, язык интерфейса, отвечает ещё на несколько вопросов (можно даже ввести sql запрос, результат выборки которого будет включён в jar) - и скачивает jar под свои требования.
Но в большинстве случаев можно написать код так, чтобы для этого WTK, ANT и т.п. на сервере были не нужны
Например, нужно заменить данные в массиве:
Код

int[] arr = { 1, 2, 3, 4, 5 };

Переписываем код так:
Код

DataInputStream dis = new DataInputStream(getClass(),getResourceAsStream("/data.bin"));
int cnt=dis.readInt();
arr = new int[cnt];
for(int i=0; i<cnt; i++) arr[i] = dis.readInt();
dis.close(); 

и добавляем в jar файл /data.bin с нужными данными (можно вместо двоичного кода использовать текстовый файл)

Автор: math64 28.9.2011, 08:04
Но если изменённый jar нужно подписывать (старая подпись недействительна), придётся всё равно ставить WTK.

Автор: ivanovpv 29.9.2011, 09:42
Цитата(math64 @  27.9.2011,  14:54 Найти цитируемый пост)
Как раз зачем - понятно. 

Мне кажется все равно проще кастомизировать приложение (или набор заранее сгенерированных приложений), чем генерировать кастомизированное приложение.


Автор: math64 29.9.2011, 11:28
Ну вот конкретный пример: мидлет показывает карту города. Можно сделать кастомизированные приложения для Москвы, Петербурга, ... но для всех заранее не откомпилируешь. Можно скачивать карты на лету с сервера, но в месте где ты сейчас находишься может быть плохая связь.
Но если мидлет должен быть подписан - проще скачать отдельно мидлет и отдельно данные и в мидлете пользоваться доступом к файловой системе телефона.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)