程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> 利用J2mePolish的build功效

利用J2mePolish的build功效

編輯:J2ME

本文重要探討如何應用j2mepolish進行build,至於j2mepolish的其他強盛功效,本文不涉及。本人接觸J2MEpolish時間不長,若有漏洞或出錯,請途經的朋友指正,同時歡迎大家拍磚。

對於J2mepolish的重要功效,不用再多講,其大名在j2me已經如雷貫耳。若還有朋友懂得或希看加深“情感”,請拜訪www.J2MEpolish.org。

 J2MEpolish安裝

安裝過程實在很簡略,在此重要探討關於eclipse的插件“mepose”。在Javaeye上,有文章探討J2MEpolish的安裝過程,其中,mepose是在另外獨立安裝的插件,而在2.0-RC4版本中,自帶了mepose插件,只要在安裝過程中填進eclipse.home和選擇Eclipse Integration(Mepose),就可以安裝mepose插件。

 在Eclipse中應用J2MEpolish

假如在Eclipse的file->new->project呈現j2mepolish工程,則闡明mepose插件已經成功安裝,至此,就可以新建j2mepolish工程。新建的J2MEpolish工程中,包含了主動創立的build.xml文件,以及src、resource等默認目錄。運行只需右鍵選中build.XML,點擊run as->ant build。

當然,不應用mepose插件也可以,由於Eclipse默認支撐ant。所以,只需要按照sample中的目錄結構存放資源和源碼,並是用語法准確的build.XML文件就可正常應用j2mepolish,畢竟,J2MEpolish的build功效,只是ant的擴大。

Eclipse的plugins目錄中,自帶有ant,eclipse3.2中的ant版本為1.6.5。假如希看應用自己的ant,可以在Eclipse中的Windows->preference->ant中設置Ant Home,將路徑指向自己的ant目錄,這樣可以保持與Eclipse外的ant版本一致。

 build.XML

sample中的build.xml,個人感到寫得太過於繁瑣,中間攙雜太多注釋。這對於不初學者,特別是不熟悉ant腳本的朋友,會比擬“愁悶”。由於本文重點探討ant的build功效,所以,只討論build.XML中的“J2MEpolish”target,其他部分,請參考相干文檔。

重要用於描寫midlet相干信息,幫助設置JAD和MANIFEST。但部分中,可以通過子元素設置jad其他屬性。有關相干屬性的定義,請參考favoyang翻譯《創立》或《Pro J2ME Polish Open Source Wireless Java Tools Suite》

固然是可選,但卻與device數據庫緊密相干。假如需要應用device相干數據,特別是對多版本的J2ME程序打包,這部分的設置尤為重要。

實際的build把持部分,在此設置midlet類名,以及第三方庫包的導進等。在屬性中,usePolishGui用於標示是否實用polish的GUI功效,留心該屬性缺省是true。所以,假如沒有用到polish的該功效,最好將其設置為false,否則打包時,將會加進polish自帶一些類庫,因此,會增加jar包的大小。

部分也是j2mepolish創立的重要部分,但並非本文討論重要,具體內容請參考favoyang翻譯《創立》或《Pro J2ME Polish Open Source Wireless Java Tools Suite》。

Device數據庫

J2mepolish存儲了超過 230種 J2ME 設備和相應的J2ME 參數,如 Canvas的大小, APIs, 支撐格局等。其中,所有的數據都定義在device.xml文件中(安裝過程,需選中External Device Database)。當然,可以隨時更新device.XML數據庫。

事實上,device數據庫對於j2me開發非常重要。在本人的開發經歷中,許多次都無奈難於獲得某類機型的具體信息,如:堆棧大小,是否支撐特定的擴大包等。即使有的公司擁有這樣一套數據聚集,也多半是以Excel的情勢保留,卻無法與程序聯合起來應用。這點,也為j2me程序的機型適配工作帶來了沉重的工作量。J2mepolish在這方面對j2me開發做出重大貢獻,以至於想antenna這樣的開源項目已經支撐J2MEpolish供給的device數據庫。

在開發過程中,聯合J2MEpolish的預處理機制,我們可以很便捷的應用該數據庫。

 

空話了大半天,先來看看具體device是如何定義的,以nokia/6600為例:

XML 代碼

    <device> 
        <identifier>諾基亞/6600identifIEr> 
        <groups>SerIEs60groups> 
        <features>hasCamerafeatures> 
        <capability name="OS" value="SymBian OS 7.0s"/> 
        <capability name="ScreenSize" value="176x208"/> 
        <capability name="BitsPerPixel" value="16"/> 
        <capability name="JavaPackage" value="mmapi, wmapi, btapi, jtwi"/> 
        <capability name="JavaPlatform" value="MIDP/2.0"/> 
        <capability name="VideoFormat" value="3gpp, mpeg-4, realvideo"/> 
        <capability name="SoundFormat" value="midi, midi24, true tones, amr, wb-amr"/> 
        <capability name="HeapSize" value="3mb"/> 
        <capability name="MaxJarSize" value="dynamic"/> 
        <capability name="CameraResolution" value="640x480"/> 
        <capability name="CameraZoom" value="2"/> 
        <capability name="Font.small" value="15"/> 
        <capability name="Font.medium" value="16"/> 
        <capability name="Font.large" value="21"/> 
        <capability name="Bugs" value="BluetoothRfcommInputStream"/>         
        <capability name="wap.userAgent" value="諾基亞6600/*"/> 

    </device> 

    用於標示該設備,由廠商和設備名組成。

    用於標示該設備屬於哪個Group,設備本身的記號(symbol)持續於group的。例如,6600屬於SerIEs60組,所以6600就擁有nokia-ui記號。J2MEpolish在預處理//#if nokia-ui時,就處理為true。而Group本身也存在著持續關系,例如,SerIEs60又持續於諾基亞-UI組。

    用於標示該設備具有的功效,如,攝像頭、觸摸屏等。

    用於設備各項重要屬性,如堆棧大小,屏幕大小等。在本例中,沒有左右軟鍵值定義,是由於其已經被定義在SerIEs60組中。

     應用device數據庫和預處理

    本節重點討論如何應用指定設備的相干數據。首先,在build.XML中指定設備,在此我們以諾基亞/6600和Motorola/E680為例,定義如下:

    XML 代碼

    <deviceRequirements> 
           <requirement name="IdentifIEr" value="諾基亞/6600,Motorola/E680" /> 
    </deviceRequirements>  

    下面按照以下幾點目標來設計代碼:

    1、6600版本應用FullCanvas,E680版本應用SetFullScreenMode

    2、6600版本應用諾基亞的翻轉方法,E680版本應用Midp2.0的

    3、獲取設備自身的堆棧大小,屏幕大小等信息

    源代碼片段如下:Java 代碼

    }  public void drawClip(Graphics g, int x, int y, Image image, int clipX, int clipY, int clipWidth, int clipHeight, int mode) { // #if polish.api.nokia-ui // # ... // # nokia的切片繪制方法,具體代碼省略 // # ... // #else //... //midp2.0的切片繪制方法,具體代碼省略 //... // #endif } } 
    
    

    運行build.XML之後,可以在build/real目錄下,找到預處理以後的6600版和E680版代碼。J2MEpolish的預處理成果就體現在此,預處理後代碼請感愛好的朋友動手實踐,在此就不貼出來了。

     思考

    本人對於J2mepolish的懂得還需深進,但在應用之後,對J2MEpolish有以下幾點思考,歡迎大家交換。

      <!--[if !supportLists]-->j2mepolish在build功效上面,實在就是ant擴大。當然,其本身也是支撐其他ant擴大,如,打包完成後,主動將jar文件上傳到服務器上。但是功效強盛的同時,卻帶來的是自由度的降落。例如,在存在以下需求時,用j2mepolish來實現打包,可能就比擬繁瑣了:在一份源碼的基礎上,對不同的資源目錄進行打包。如,A版本應用的資源目錄為res1,B版本應用的資源目錄為res2;不同版本,jad屬性不同。本人認為,J2MEpolish中,選擇不同的設備是在處指定,這樣一來,不同版本之間差別就很難在一個build.XML文件中或者一次build過程中定義明白。當然,並非說j2mepolish不能實現以上需求,這就是仁者見仁,智者見智了。<!--[if !supportLists]--><!--[endif]-->J2MEpolish編譯應用的庫,如: midp2.0.jar、cldc1.0.jar等,都是來自於polish_home/import目錄下,這樣不方便相干庫的升級和應用。
     相干項目先容

    Antenna:利用於j2me的ant擴大,最新版本支撐預處理,也支撐J2MEpolish的device數據庫。地址:http://antenna.sourceforge.Net/

    J2ME Device DB:類似於Antenna的一個項目,擁有自己的設備數據庫,也支撐預處理。地址:http://J2ME-device-db.sourceforge.Net/pmwiki/index.PHP?n=Main.HomePage

     

    軟件版本

    J2MEpolish-2.0-RC4

    jdk1.5

    eclipse3.2

     參考材料

    周游j2mepolish    拜訪地址:http://www.J2MEpolish.org/docs/tour-cn.Html

    《Pro J2ME Polish Open Source Wireless Java Tools Suite》 作者:Robert Virkus

    《創立》 翻譯:favoyang

    J2MEpolish doc      安裝自帶

    J2MEPolish集成到eclipse32 拜訪地址:http://www.Javaeye.com/topic/38138

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved