ActionScript 編譯器

ActionScript 與 MXML 程式碼必須先經過編譯,才能包含在 AIR 應用程式中。若使用 Adobe Flash Builder 或 Adobe Flash Professional 之類的整合開發環境 (IDE),IDE 會在幕後處理編譯事宜。不過,不使用 IDE 或使用建置程式碼時,您也可以從命令列叫用 ActionScript 編譯器以建立 SWF 檔案。

關於 Flex SDK 中的 AIR 命令列工具

您用來建立 Adobe AIR 應用程式的每個命令列工具都會呼叫對應的工具來建立應用程式:

  • amxmlc 呼叫 mxmlc 來編譯應用程式類別

  • acompc 呼叫 compc 來編譯元件庫與組件類別

  • aasdoc 呼叫 asdoc 從原始碼註解產生文件檔案

Flex 與 AIR 版本的公用程式之間,唯一的差異是 AIR 版本會從 air-config.xml 檔案載入設定選項,而不是從 flex-config.xml 檔案。

如需有關 Flex SDK 工具及其命令列選項的詳細資訊,請參閱 Flex 文件 。這裡所說明的 Flex SDK 工具不但提供您快速入門的基本說明,同時並指出建立 Flex 應用程式與建立 AIR 應用程式之間的差異。

編譯器設定

您通常會同時在命令列和一或多個設定檔中指定編譯選項。全域 Flex SDK 設定檔包含編譯器每次執行時使用的預設值。您可以依據自己的開發環境來編輯此檔案。Flex SDK 安裝的架構目錄中有兩個全域 Flex 設定檔。當您執行 amxmlc 編譯器時會使用 air-config.xml 檔案。此檔案藉由加入 AIR 元件庫來設定 AIR 專用的編譯器。當您執行 mxmlc 時會使用 flex-config.xml 檔案。

預設的設定值適用於瞭解 Flex 與 AIR 的運作狀況,但當您著手進行完整的專案時,請仔細檢查可用的選項。您可以在本機設定檔中提供編譯器選項的專案專用值,此值優先於指定專案的全域值。

備註: AIR 應用程式並無專用的編譯選項,但在編譯 AIR 應用程式時,您必須參考 AIR 元件庫。一般來說,您會在專案層級設定檔、建立工具 (例如 Ant) 檔案,或直接在命令列上參考這些元件庫。

編譯 AIR 的 MXML 和 ActionScript 原始檔案

您可以使用命令列 MXML 編譯器 (amxmlc) 來編譯 AIR 應用程式的 Adobe® ActionScript® 3.0 和 MXML 資源 (您不需要編譯 HTML 類型應用程式。若要在 Flash Professional 編譯 SWF,您只要將影片發佈至 SWF 檔即可)。

使用 amxmlc 時的基本命令列模式如下:

amxmlc [compiler options] -- MyAIRApp.mxml

其中 [compiler options] 可以指定用於編譯 AIR 應用程式的命令列選項。

amxmlc 命令會叫用標準的 Flex mxmlc 編譯器並搭配額外的參數 +configname=air 。這個參數會指示編譯器使用 air-config.xml 檔案,而不是 flex-config.xml 檔案。使用 amxmlc 在其它方面都與使用 mxmlc 相同。

這個編譯器會載入 air-config.xml 設定檔,指定一般編譯 AIR 應用程式所需的 AIR 和 Flex 元件庫。您也可以使用本機的專案層級設定檔,覆寫全域設定的選項或新增其它選項。一般而言,建立本機設定檔最簡單的方式,就是編輯一份全域版本的副本。您可以搭配 -load-config 選項,載入本機檔案:

-load-config=project-config.xml 會覆寫全域選項。

-load-config+=project-config.xml 會在可以採用值以外項目的全域選項 (例如 -library-path 選項) 中加入其它值;只採用單一值的全域選項會遭到覆寫。

如果您為本機設定檔使用特殊的命名慣例,amxmlc 編譯器便會自動載入該本機檔案。舉例而言,如果主要 MXML 檔案為 RunningMan.mxml ,則請將本機設定檔命名為 RunningMan-config.xml 。現在,若要編譯應用程式,您只需輸入:

amxmlc RunningMan.mxml

RunningMan-config.xml 將會自動載入,因為它的檔名符合所編譯之 MXML 檔案的檔名。

amxmlc 範例

在下列範例會示範 amxmlc 編譯器的用法 (僅需要編譯應用程式的 ActionScript 和 MXML 資源)。

編譯 AIR MXML 檔案:

amxmlc myApp.mxml

編譯及設定輸出名稱:

amxmlc –output anApp.swf -- myApp.mxml

編譯 AIR ActionScript 檔案:

amxmlc myApp.as

指定編譯器設定檔:

amxmlc –load-config config.xml -- myApp.mxml

從其它設定檔新增額外選項:

amxmlc –load-config+=moreConfig.xml -- myApp.mxml

在命令列新增元件庫 (除了已經在設定檔中的元件庫以外):

amxmlc –library-path+=/libs/libOne.swc,/libs/libTwo.swc  -- myApp.mxml

編譯 AIR MXML 檔案而不使用設定檔 (Win):

mxmlc -library-path [AIR SDK]/frameworks/libs/air/airframework.swc, ^ 
[AIR SDK]/frameworks/libs/air/airframework.swc, ^ 
-library-path [Flex SDK]/frameworks/libs/framework.swc ^ 
-- myApp.mxml

編譯 AIR MXML 檔案而不使用設定檔 (Mac OS X 或 Linux):

mxmlc -library-path [AIR SDK]/frameworks/libs/air/airframework.swc, \ 
[AIR SDK]/frameworks/libs/air/airframework.swc, \ 
-library-path [Flex 3 SDK]/frameworks/libs/framework.swc \ 
-- myApp.mxml

編譯 AIR MXML 檔案以使用執行階段共享元件庫:

amxmlc -external-library-path+=../lib/myLib.swc -runtime-shared-libraries=myrsl.swf -- myApp.mxml

編譯 AIR MXML 檔案以使用 ANE (請務必針對 ANE 使用 ‑external‑library‑path ):

amxmlc -external-library-path+=../lib/myANE.ane -output=myAneApp.swf -- myAneApp.mxml

透過 Java 進行編譯 (其中類別路徑設定為包含 mxmlc.jar ):

java flex2.tools.Compiler +flexlib [Flex SDK 3]/frameworks +configname=air [additional compiler options] -- myApp.mxml

flexlib 選項可用於識別 Flex SDK 架構目錄的位置,以供編譯器找到 flex_config.xml 檔案。

透過 Java 進行編譯 (不設定類別路徑):

java -jar [Flex SDK 2]/lib/mxmlc.jar +flexlib [Flex SDK 3]/frameworks +configname=air [additional compiler options] -- myApp.mxml

使用 Apache Ant 來叫用編譯器 (範例中使用 Java 工作來執行 mxmlc.jar):

<property name="SDK_HOME" value="C:/Flex46SDK"/> 
<property name="MAIN_SOURCE_FILE" value="src/myApp.mxml"/> 
<property name="DEBUG" value="true"/> 
<target name="compile"> 
    <java jar="${MXMLC.JAR}" fork="true" failonerror="true"> 
        <arg value="-debug=${DEBUG}"/> 
        <arg value="+flexlib=${SDK_HOME}/frameworks"/> 
        <arg value="+configname=air"/> 
        <arg value="-file-specs=${MAIN_SOURCE_FILE}"/> 
    </java> 
</target>

編譯 AIR 組件或程式庫 (Flex)

您可以使用組件編譯器 acompc 編譯 AIR 元件庫和獨立的組件。除了以下不同之處,acompc 組件編譯器的行為都與 amxmlc 編譯器相似:

  • 您必須指定要將程式碼基底中的哪些類別納入元件庫或組件中。

  • acompc 不會自動尋找本機設定檔。若要使用專案設定檔,您必須使用 –load-config 選項。

acompc 命令會叫用標準的 Flex compc 組件編譯器,但是會從 air-config.xml 檔案 (而非 flex-config.xml 檔案) 載入其設定選項。

組件編譯器設定檔

您可以使用本機設定檔,避免在命令列輸入 (而且可能是不正確的輸入) 來源路徑和類別名稱。將 -load-config 選項加入至 acompc 命令列,即可載入本機設定檔。

下列範例會示範用於建立具有 ParticleManager 和 Particle 類別之元件庫的設定,這兩個類別都在 com.adobe.samples.particles 套件中:類別檔案則位於 source/com/adobe/samples/particles 資料夾中。

<flex-config> 
    <compiler> 
        <source-path> 
            <path-element>source</path-element> 
        </source-path> 
    </compiler> 
    <include-classes> 
        <class>com.adobe.samples.particles.ParticleManager</class> 
        <class>com.adobe.samples.particles.Particle</class> 
    </include-classes> 
</flex-config>

若要使用名為 ParticleLib-config.xml 的設定檔來編譯元件庫,請輸入:

acompc -load-config ParticleLib-config.xml -output ParticleLib.swc

若要在命令列完整執行相同的命令,請輸入:

acompc -source-path source -include-classes com.adobe.samples.particles.Particle  
com.adobe.samples.particles.ParticleManager -output ParticleLib.swc

(請在一行內輸入完整的命令,或為命令殼層使用行接續字元)。

acompc 範例

下列範例會假設您是使用名為 myLib-config.xml 的設定檔。

編譯 AIR 組件或元件庫:

acompc -load-config myLib-config.xml -output lib/myLib.swc

編譯執行階段共享元件庫:

acompc -load-config myLib-config.xml -directory -output lib

(請注意,在執行命令之前,lib 資料夾必須存在並且是空的)。