3 使用Eclipse進行無線開發
創建工程
在完成了環境搭建后,我們就可以在Eclipse中用我們所熟悉的方式開發無線應用程序。下面讓我們完成一個經典Hello World程序。這里,我們選擇使用Sun WTK 2.2作為模擬器。
?
在Eclipse工作臺上的新建選項中,選擇J2ME Midlet Suite,首先創建一個MIDP Suit。
在下一步中,我們可以看到有多種模擬器設備可供選擇,選定“J2ME Wireless Toolkit 2.2 MIDP 2.0 Platform”后,繼續下一步,直至完成。
此時,在包資源管理器中,Hello World套件項目已經被建立起來,我們注意到,Eclipse為我們自動綁定了J2ME library運行庫,并創建了jad等配置文件。
?
創建MIDlet文件
完成項目創建后,讓我來創建一個MIDlet類文件,它是整個套件的入口文件。也是Hello World的關鍵類。
選擇J2ME Midlet之后,我們可以看到系統自動繼承了MIDlet超類,請確保三個默認方法復選框被選中,輸入類名,完成創建。
打開剛剛創建的Hello World,我們發現Eclipse已經自動幫我們生成了程序主體,繼承方法以及一些注釋。
如此之多的重復工作已經被Eclipse完成,以至于我們只需要在相應的方法中填寫自己的實現過程就可以了。
首先在Hello World代碼中導入界面類import javax.microedition.lcdui.*;
然后,我們僅僅需要用以下代碼覆蓋原先的構造函數:
public HelloWorld() {
?????? super ();
?????? // TODO 自動生成構造函數存根
?????? Form form = new Form("Hello World");
?????? form.append("Welcome to J2ME World!");
?????? Display.getDisplay(this).setCurrent(form);
}
如此簡單的幾步,第一個J2ME就完成了!
?
?
執行MIDlet
在Hello World項目上單擊右鍵,選擇“運行…”,
???
?
在彈出對話框中,在Wireless Toolkit Emulator中新建一個配置,指定剛剛Hello World為入口文件,應用設置,最后運行。
?
可以看到,Eclipse自動啟動了WTK的模擬器,顯示出了Hello World的歡迎界面!
?
打包與混淆
打包,就是為套件生成jar文件,用來發布項目。右鍵單擊目標項目,可以在J2ME選項中選定Create Package,生成jar包。
?
混淆,就是為了保護版權,增加別人反編譯閱讀源代碼的難度;同時可以減少jar包的體積。在J2ME選項中也能夠找到創建混淆包的選項。但首先,需要指定當前系統中混淆器的安裝位置。
我們這里采用了開源免費的Proguard3.0.1作為混淆器。在“首選項 / J2ME / packaging / obfuscation”中,通過瀏覽指定Proguard3.0.1的安裝(解壓)路徑。
?
應用保存設置之后,就可以成功的創建混淆包了。
?
注意:
很多初次使用的朋友會發現即便指定路徑之后,依然不能順利創建混淆,并且往往得到類似下面的警告信息。
?
出現這個錯誤的原因與JDK路徑有關。我們在安裝了JDK之后(以1.4.2為例),系統環境變量中存在兩種JDK,一種是JDK SDK,一種是運行時環境(runtime)。Eclipse在解壓安裝時選擇的是后者,而啟動Proguard3.0.1需要的是前者。
修復這個問題很簡單,在“首選項 / java / 已安裝的JRE”中把你的JRE從指向運行時更改為指向SDK(即JDK的安裝目錄)
?
此時JRE將擁有完整JDK庫文件,再次運行創建混淆,我們會發現在Hello World子目錄deployed中包括了HelloWorld.jar,HelloWorld_base.jar, HelloWorld_base_obf.jar。他們分別是混淆后,混淆前等不同版本的jar包。
?