Flex:基於Flex-config.xml的命令列編譯
來源:互聯網
上載者:User
今天GTalk Flex
討論群上有位朋友就mxmlc編譯的問題和我討論了一天,他要在linux下使用命令列編譯Flex,我就推薦他使用flex-config.xml檔案的方式,為什麼要推薦使用flex-config.xml的方式呢,flex-config.xml涵蓋flex編譯及其他控制的所有選項,對於命令列編譯來說,mxmlc複雜的編譯選項對於命令列的輸入簡直就是噩夢,而使用flex-config.xml可以方便的修改編譯選項,並且一次修改就可以在後續的所有mxmlc編譯過程中儲存下來,還有個重要的地方,flex-config.xml檔案是一個xml檔案,更加的友好,而且其中每個參數都有詳細的注釋,對於我的調整編譯參數也更方便。
因為Adobe的Flex文檔有很多語焉不詳的地方,為了避免大家在命令列編譯過程中出現混亂,我們現在來仔細解釋基於flex-config.xml編譯過程的細節。 首先我們來對環境做些約定,定義以下幾個變數以方便我們後面的行文: $SDK:Flex 2 SDK所在目錄 $frameWorks:Flex 2 架構根目錄,一般為$sdk下面的frameworks $flexApp:flex項目的根目錄。該目錄包含了我們項目的源碼等。 首先我們我們使用mxmlc命令要匯出一份預設的flex-config檔案,注意Linux下匯出配置會報找不到flex-config.xml錯誤,這是個BUG,不要理他就可以了,實際檔案已經匯出成功:
[bash] cd $SDK/bin ./mxmlc -dump-config flex-config.xml 這個匯出的flex-config.xml將是我們以後編譯flex的設定檔,所有的編譯參數同將通過修改該檔案來實現。 接著將上面的匯出的檔案複製到我們的flex應用根目錄中: [bash] cp flex-config.xml $flexAPP 因為flex-config設定檔的特殊性,要脫離flex架構使用改檔案的話,我們還需要對flex-config.xml檔案進行一點小小的修改,修複一下路徑指向的問題:
首先修改36行,將其中的: [xml] <path-element>libs/playerglobal.swc</path-element>
修改為: [xml] <path-element>${flexlib}/libs/playerglobal.swc</path-element> 接著修改82、83行,將其中的 [xml] <path-element>libs</path-element> <path-element>locale/{locale}</path-element> 改為: [xml] <path-element>${flexlib}/libs</path-element>
<path-element>${flexlib}/locale/{locale}</path-element> 繼續修改97行,將其中的: [xml] <manifest>mxml-manifest.xml</manifest> 修改為: [xml] <manifest>${flexlib}/mxml-manifest.xml</manifest> 最後,295-297行,將其由: [xml] <!-- load-config:
load a file containing configuration options--> <load-config>${flexlib}/flex-config.xml</load-config> 修改為: [xml] <!-- load-config: load a file containing configuration options <load-config>${flexlib}/flex-config.xml</load-config> --> 修改好後儲存,然後使用如下方法編譯flex:
[bash] mxmlc -load-config flex-config.xml +flexlib=$frameWorks Flex_Test.mxml 以上命令,假定您以及將$SDK/bin加入到了PATH中了,參數中的 +flexlib=$frameWorks表示增加token flexlib的定義,定義該值為$frameWorks,以供flex-config.xml中使用。
這樣我們每次要改變編譯參數直接修改flex-config.xml檔案可以了,flex-config裡面的參數調整,大家可以直接查看flex-config.xml檔案中的注釋,該注釋非常說明的很清楚,但如果還有不清楚,可以大家可以查看
官方文檔,這裡只提一下我們比較常用的幾個地方: 11行,<actionscript-file-encoding>:對應compiler.actionscript-file-encoding編譯參數,設定actionscript的編碼,這個對於異構環境特別重要,特別是系統編碼與WEB伺服器編碼不一致的時候這個參數非常有用。我們建議您將其設定為utf-8。注意該參數預設是關閉的,需要開啟注釋才能啟用。 25行,<debug>:是否編譯debug支援swf檔案,預設為false。 65-68行,<include-libraries>:如果您的項目要使用第三方的SWC類庫,可以在這裡指向你要使用的SWC檔案。同樣該參數預設是關閉的,需要開啟注釋才能啟用。
76行,<keep-generated-actionscript>:是否保留編譯過程中的中間 actionscript檔案,Flex中的mxml的編譯,實際上是現產生對應mxml的ActionScript代碼,然後在編譯ActiongScript的,這裡保留的就是這個代碼,這些代碼對於您對Flex的研究很有協助,有興趣的朋友可以設定其為true來查看中間AS代碼。該參數預設為false不保留。 120-123行,<source-path>:指向第三方ActiongScript原始碼根目錄,如果您的項目要使用第三方的Ascriptscript源碼,在此設定。注意在目前的目錄下的As源碼,不需要在這裡另外設定。
另外,提醒使用Linux的朋友,在Linux下進行Flex開發,如果使用命令列編譯的話,我們推薦您使用最近adobe labs發布的
fcsh編譯,fcsh使用了預載入技術,編譯的速度會快點。順便提下,linux下除了命令列的方式,也可以使用
Flex Ant
Task的編譯方法,最後當然也可以使用
FlexBuilder整合式開發環境編譯的方式。轉自:http://wenku.baidu.com/view/a03036de6f1aff00bed51e22.html