Blackberry: сборка из командной строки и автозапуск приложения - PullRequest
1 голос
/ 26 февраля 2010

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

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

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

  <cldc runonstartup=="true"...

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

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

Ответы [ 2 ]

1 голос
/ 05 марта 2010

Итак, способ сделать это, к сожалению, изменить J2ME-польский источник! Как указано в этом сообщении об ошибке , польская структура сборки J2ME (в версии 2.1.4) не передает атрибут RAD-MIDlet-Flags-x в RAPC.

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

Источник различий (из 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];
0 голосов
/ 26 февраля 2010

Другой польский пользователь:)

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

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

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

Я не проверял это, но логика кажется верной :) Дайте мне знать, работает она или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...