买了e50 很久了,但还没有尝试在手机下进行编程过。。作为一个程序员,觉得有点可惜,今天有空配置一下环境,也作一下手机开发
最终要先配置好jdk的环境(废话)
首先要在nokia的论坛上下载一个nokia的sdk。e50下的系统为sybmian第三版,所以下载的nS60_jme_sdk_3rd_e_FP1这个文件(要先注册的),把这个sdk包安装上
至于IDE,我用惯用了 eclipse,当然要用eclipse的插件,于是找到clipseMe,这是在nokia的论坛上介绍的,下载回来后,像平常插件一样扔到相应的文件夹就行了。再打开eclipse,->首选项就会多出一个j2me出来,展开它就有一个Device Management,
按一下import 这个键,选个刚才要安装的sdk包,refresh一下会出现很多设备。这大概就是nokia开发的模拟器吧.接着再到java这个选项中,装调试器超时设为15000,(当然你也可以设置更大一些),因为运行时,contect to agent真是太慢了..
有些文章上介绍要装sun的wtk,但我觉得好像没有什么用的,因为开发nokia的程序,所调用的库也是用nokia,但好歹也要给些面子给sun,说不定什么时候会用到。。这也没有什么好说的,从sun网站下载回来后,安装上去,再import进去就行了
好了,现在新建一个j2me midlet suite项目,新建一个sayhello的j2me midlet类,源代码如下
- import javax.microedition.midlet.MIDlet;
- import javax.microedition.midlet.MIDletStateChangeException;
- import javax.microedition.lcdui.*;
- public class SayHello extends MIDlet {
- Display display;
- private TextBox textBox;
- public SayHello() {
- // TODO 自动生成构造函数存根
- super();
- display = Display.getDisplay(this);
- textBox = new TextBox("演示","你好",50,0);
- }
- protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
- // TODO 自动生成方法存根
- }
- protected void pauseApp() {
- // TODO 自动生成方法存根
- }
- protected void startApp() throws MIDletStateChangeException {
- // TODO 自动生成方法存根
- Form form = new Form("First MiDlet");
- //form.append("你好"+display.getColor(Display.CHOICE_GROUP_ELEMENT));
- display.setCurrent(textBox);
- }
- }
j2me的程序继承midlet类,从startApp()开始执行,类似于main方法
现在开始运行下这个程序了,打开eclipse上的运行,新建一个Wireless Toolkit的配置,Midlet上选择运行那一个类,和那个jad文件,Emulation上选择运行在那个设备,选选择了
Sun wireless toolkit的DefaultColorphone设置,按下运行,出现了我们的第一个程序SayHello.....
再测试一下S60 3rd Editor,出现了错误java.util.zip.ZipException :invalid entry compressed size(expected 638 but got 604 bytes),这是在sdk process处理过程中的create jar file出错了。
根据字面上的意思是读取jar包时出现 了错误,但为什么在sun wirless toolkit就正常了,有问题找google,终于找到了一个文章发现问题所在,这可能是eclipseMe生成的jar格式与s60 3rd sdk包读取模式有问题,但604 bytes和638 bytes这个是怎么得来的,但不知道eclipseMe 是怎么生成jar的。。这篇文章提出一个暂时的解决方法,先create package,再create obfuscation package,因为混淆器可以把package的大小减少的缘故吧。在命令行下输入命令emulation -Xdescription:c:\puzilla\deployed\ xxx.jad 就可成功运行
总的来说eclispseMe和nokia s60 3rd sdk结合的并不很好,但现在还是能工作,希望 以后再来解决这个问题先