Blackberry: сборка командной строки и автозапуск приложения

У меня есть приложение, построенное из командной строки (ANT) с использованием J2ME Polish. Таким образом, это приложение определяется через build.xml, а не из файлов проекта Blackberry JDE.

Мне нужно, чтобы это приложение запускалось автоматически. Это достаточно просто сделать после первого запуска приложения (пример). Однако для этого требуется, чтобы приложение запускалось пользователем вручную (чего я хочу избежать).

JDE предоставляет параметры, которые вы можете проверить, чтобы включить автозапуск, и из ANT:

  <cldc runonstartup=="true"...

Сделаем свое дело. Вопрос в том, как мне интегрировать это в польскую сборку (то есть в польский build.xml, который также создается для других платформ)?

Кто-нибудь знает, что на самом деле делает опция автозапуска в JDE / что она меняет?


person KevinD    schedule 26.02.2010    source источник


Ответы (2)


Так что, к сожалению, способ сделать это - изменить исходный код J2ME-Polish! Как указано в этом отчете об ошибке польской платформы сборки J2ME (по адресу версия 2.1.4) не передает атрибут JAD RIM-MIDlet-Flags-x в RAPC.

Изменения относительно просты - просто передать значение RIM-MIDlet-Flags-1, если оно определено в JAD, в противном случае установить его на ноль (как в исходном исходном коде 2.1.4).

Исходный код diff (из 2.1.4):

Index: /enough-polish-build/source/extensions/de/enough/polish/blackberry/JarToCodFinalizer.java
===================================================================
--- /enough-polish-build/source/extensions/de/enough/polish/blackberry/JarToCodFinalizer.java   (revision 315)
+++ /enough-polish-build/source/extensions/de/enough/polish/blackberry/JarToCodFinalizer.java   (revision 316)
@@ -36,6 +36,7 @@
 import java.util.Calendar;
 import java.util.Locale;
 import java.util.Map;
+import java.util.List;
 import java.util.Properties;

 import org.apache.tools.ant.BuildException;
@@ -185,6 +186,13 @@
            }
        }
        File iconFile = null;
+       Map jadProperties;
+       try { 
+           jadProperties = FileUtil.readPropertiesFile( jadFile, ':' );    
+       } catch (Exception e) {
+           e.printStackTrace();
+           throw new BuildException("Unable to read JAD file " + e.toString() );
+       }
        if (mainClassName != null) {
            try {
                /*
@@ -230,12 +238,26 @@
                        "MicroEdition-Configuration: CLDC-1.1",
                        //"MIDlet-1: Demo," + iconUrl + ",",
                        "MIDlet-1: " + env.getVariable("MIDlet-Name") + "," + iconUrl + ",",
-                       //"MIDlet-Icon: " + iconUrl,
-                       "RIM-MIDlet-Flags-1: 0"
+                       //"MIDlet-Icon: " + iconUrl
                };

+               /* Ensure that if RIM-MIDlet-Flags is defined in the JAD, it is
+                * passed on to RAPC to create the COD file.
+                * See https://developer.berlios.de/bugs/?func=detailbug&group_id=1246&bug_id=16901
+                * for details.
+                */
+               ArrayList newEntriesList = new ArrayList(Arrays.asList(newEntries));
+               final String flagsKey = "RIM-MIDlet-Flags-1";
+               String flagString = (String)jadProperties.get(flagsKey);
+               if (flagString == null) {
+                   flagString = "0";
+               }
+               flagString = flagString.trim();
+               System.out.println("JarToCodFinalizer setting " + flagsKey + ": " + flagString);
+               newEntriesList.add(flagsKey+ ": "  + flagString);
+
                File rapcFile = new File( jadFile.getParent(), codName + ".rapc");
-               FileUtil.writeTextFile( rapcFile, newEntries );
+               FileUtil.writeTextFile( rapcFile, newEntriesList );
            } catch ( IOException e ) {
                // this shouldn't happen
                e.printStackTrace();
@@ -367,7 +389,6 @@
            // now rewrite JAD file so that it is ready for OTA download:
            // (first backup JAD file:)
            //FileUtil.copy(jadFile,  new File(jadFile.getParent(), jadFile.getName() + ".bak") );
-           Map jadProperties = FileUtil.readPropertiesFile( jadFile, ':' );    
            Object[] keys = jadProperties.keySet().toArray();
            for (int i = 0; i < keys.length; i++) {
                String key = (String) keys[i];
person KevinD    schedule 05.03.2010
comment
Подтверждено с некоторыми изменениями, см. Полированную ветку j2mepolish.org/forum/viewtopic.php ? p = 3379 # 3379 - person drubin; 08.04.2010

Еще один польский пользователь :)

Взгляните на ВВ форумы 2-й пост. Затем используя то, что мы знаем о полировке и атрибуты jad

Добавьте это в свой раздел jad вашего build.xml

<jad>
 <attribute  name="RIM-MIDlet-Flags" 
   value="1" 
  if="polish.vendor == BlackBerry" />
</jad>

Я не тестировал это, но логика кажется верной :) Сообщите мне, работает это или нет.

person drubin    schedule 26.02.2010
comment
Это не будет (и не работает) - уже пробовал. Польские приложения Blackberry не являются мидлетами, несмотря на внешний вид. Процесс сборки на польском языке переводит MIDlet в приложение Blackberry UIA (см. j2mepolish.org/cms/leftsection/documentation/platforms/). Установка RIM-MIDlet-Flags работает только для мидлетов, поэтому, увы, описанный вами метод не работает. - person KevinD; 01.03.2010
comment
Я заговорил слишком рано - очевидно, RIM-MIDlet-Flags действительно работает, а не не-MIDlet ... Я, должно быть, делаю что-то не так. Я попробую еще раз и попробую отладить, что не так. - person KevinD; 01.03.2010
comment
Отлично :) дайте мне знать, если это сработает. hehe Извините, я забыл упомянуть, что вам может потребоваться изменить номер в этом случае 1 на что-то другое в зависимости от устройства / ОС. Я только что заметил, что в некоторых версиях указано 32 как допустимое число для автозапуска. - person drubin; 01.03.2010
comment
Определенно не работает. JarToCodFinalizer (часть «цепочки сборки Polish Blackberry») жестко кодирует RIM-MIDlet-Flags на «0», который передается в RAPC. Без передачи флагов в RAPC приложение не получит атрибут-autostart. Однако я думаю, что у меня есть исправление (которое требует изменения и сборки J2MEPolish!). - person KevinD; 01.03.2010
comment
Дайте мне знать патч, и я позабочусь о том, чтобы он был завершен :) Имелось в виду добавить кое-что к их поддержке BB. - person drubin; 01.03.2010