2010-02-26 3 views
1

나는 J2ME 폴란드어를 사용하여 명령 행 (ANT)에서 구축 된 응용 프로그램이 있습니다. 따라서이 응용 프로그램은 Blackberry JDE 프로젝트 파일이 아닌 build.xml을 통해 정의됩니다. 내가해야 할 일은블랙 베리 : 명령 줄 빌드 및 응용 프로그램이 자동으로 시작

이 응용 프로그램의 자동 시작을합니다. 응용 프로그램을 처음 실행 한 후에는 쉽게 수행 할 수 있습니다 (example). 그러나 이것은 사용자가 수동으로 응용 프로그램을 실행해야합니다 (필자는 피하고 싶습니다).

JDE는 자동 시작을 가능하게 확인할 수있는 옵션을 제공하며, ANT에서 :

<cldc runonstartup=="true"... 

이 트릭을 할 것입니다. 문제는 이것을 폴란드어 빌드 (예 : 다른 플랫폼 용으로 빌드하는 폴란드어 build.xml)에 어떻게 통합할까요?

사람은 JDE에서 자동 시작 옵션이 실제로는 변경/무엇 무엇을 알아?

답변

1

그래서,이 작업을 수행하는 방법은, 불행하게도 J2ME - 폴란드어 소스를 변경하는 것입니다! 이 bug report에 설명 된대로 J2ME 폴란드어 빌드 프레임 워크 (버전 2.1.4)는 RAP-RELC에 RIM-MIDlet-Flags-x JAD 속성을 전달하지 않습니다.

변화는 비교적 단순하다 - 그렇지 않으면 단순히 (2.1.4 원본 소스처럼)을 0으로 설정하는 경우에 정의 된 JAD RIM-미들 릿 - 1 플래그 값에 전달.

은 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]; 
+0

일부 변경 사항은 polish thread http : // www.j2mepolish.org/forum/viewtopic.php?p=3379#3379 – drubin

0

또 다른 폴란드어 사용자 :

BB 포럼 제 2 회 포스트를 살펴 보자. 그런 다음 우리는 폴란드어에 대해 알고 jad attributes

내가이 테스트를하지 않은

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

당신의 build.xml의 당신의 JAD 섹션이 추가 있지만 논리가 날 경우 알려 주시기 바랍니다 :) 유효한 것으로 보이는 사용 그것은 작동하거나하지 않습니다.

+0

- 이미 그것을 시도했다. 폴란드어 Blackberry 애플리케이션은 외모에도 불구하고 MIDlet이 아닙니다. 폴란드어 빌드 프로세스는 MIDlet을 Blackberry UIApplication으로 변환합니다 (http://www.j2mepolish.org/cms/leftsection/documentation/platforms/blackberry.html#blackberry-gui 참조). RIM-MIDlet-Flags 설정은 MIDlet에서만 작동하므로 설명하는 방법이 작동하지 않습니다. – KevinD

+0

너무 빨리 말했습니다. 분명히 RIM-MIDlet-Flags *는 MIDlet이 아닌 것이 아닙니다. 나는 틀린 일을해야합니다. 나는 그것을 다시 시도하고 잘못된 것을 디버깅 할 것이다. – KevinD

+0

그레이트 :) 만약 이것이 작동하면 알려주십시오. ㅎㅎ 죄송합니다 당신이 난 그냥 몇 가지 버전이 자동 시작에 대한 유효한 숫자로 32을 표시 눈치 장치/OS에 따라 다른 것으로 "1"이 경우 번호를 변경해야 할 수도 있습니다 언급하는 것을 잊었다. – drubin