設定Adobe AIR應用程式的屬性

Adobe整合執行環境(Adobe Integrated Runtime)」簡稱AIR,是一個整合了Flash Player, Adobe PDF Reader, Web瀏覽器(WebKit)和SQLite(小型資料庫)的軟體平台。AIR的作用類似Mac OS X上的Dashboard Widget或者微軟Vista上的Sidebar Gadget,只要在用戶的電腦上安裝了AIR軟體,就能執行AIR桌面應用程式

AIR應用程式的安裝和執行流程就像一般的應用軟體一樣,以Windows為例,安裝完畢後,用戶將能從「開始→所有程式」選單執行它。但是AIR所採用的技術是Web開發人員早已熟知的東西。簡單地說,只要會編寫HTML/JavaScript或者Flash/ActionScript程式,就可以著手開發AIR桌面應用程式。

每個AIR應用程式都需要包含一個設定該應用程式的XML文件,底下是筆者翻譯自Adobe官方的說明文件,裡面詳述了此XML文件的標籤語法,希望能對有興趣開發AIR應用程式的讀者有所幫助。

設定Adobe AIR應用程式屬性

:趙英傑
原文出處:Adobe官方技術文件(Developing AIR Applications with HTML and AJAX

除了建立 AIR應用程式所需的全部資源檔之外,Adobe AIR應用程式還需要一個用來定義Adobe AIR應用程式基本屬性的XML檔,此檔案稱為「應用程式描述檔(application descriptor)」。

開發AIR應用程式時,你必須替每個專案建立一個應用程式描述檔。Adobe提供的SDK裡面,包含一個descriptor-sample.xml範例描述檔。

Adobe AIR應用程式描述檔的架構

應用程式描述檔包含整個AIR應用程式的屬性,例如:它的名稱、版本、版權資訊…等等。「應用程式描述檔」能被命名成任何檔名。每當新建專案時,Flex Builder 都會自動建立此描述檔。當你使用ADT(譯註:AIR Development Tool的縮寫,代表「AIR開發工具」)封裝(package)應用程式時,應用程式描述檔將被重新命名成application.xml,並且放在AIR封裝裡的特定路徑底下。

底下是一個應用程式描述檔的範例(譯註:雖然此XML文件的編碼格式為UTF-8,但SDK的範例檔卻存成ANSI格式,若描述檔包含中文,請記得將它轉存成UTF-8格式):

<?xml version="1.0" encoding="utf-8" ?>
<application xmlns="http://ns.adobe.com/air/application/1.0.M6"
    minimumPatchLevel="1047">
    <id>com.example.HelloWorld</id>
    <version>2.0</version>
    <filename>Hello World</filename>
    <name>AIR的Hello World範例</name>
    <description>
	這是AIR技術文件提供的Hello World範例。
    </description>
    <copyright>版權所有 © 2006 空殼公司</copyright>
    <initialWindow>
        <title>這是標題</title>
        <content>
            HelloWorld-debug.html
        </content>
        <systemChrome>none</systemChrome>
        <transparent>true</transparent>
        <visible>true</visible>
        <minimizable>true</minimizable>
        <maximizable>false</maximizable>
        <resizable>false</resizable>
        <width>640</width>
        <height>480</height>
        <minSize>320 240</minSize>
        <maxSize>1280 960</maxSize>
    </initialWindow> 
    <installFolder>Example Co/Hello World</installFolder>
    <programMenuFolder>Example Co</programMenuFolder>
    <icon>
        <image16x16>icons/smallIcon.png</image16x16>
        <image32x32>icons/mediumIcon.png</image32x32>
        <image48x48>icons/bigIcon.png</image48x48>
        <image128x128>icons/biggestIcon.png</image128x128> 
    </icon>
    <customUpdateUI>true</customUpdateUI>
    <allowBrowserInvocation>false</allowBrowserInvocation>
    <fileTypes>
        <fileType>
            <name>adobe.VideoFile</name>
            <extension>avf</extension>
            <description>Adobe視訊檔</description>
            <contentType>application/vnd.adobe.video-file</contentType>
            <icon>
                <image16x16>icons/avfIcon_16.png</image16x16>
                <image32x32>icons/avfIcon_32.png</image32x32>
                <image48x48>icons/avfIcon_48.png</image48x48>
                <image128x128>icons/avfIcon_128.png</image128x128>
            </icon>
        </fileType>
    </fileTypes>
</application>

定義「應用程式描述檔」中的屬性

在應用程式描述檔中,最上層的application屬性包含下列幾個特質(attribute,翻註:「特質」和「屬性」可交替使用):

<application version="1.0"
    xmlns="http://ns.adobe.com/air/application/1.0.M6"
    minimumPatchLevel="5331">

xmlns:此為AIR 的命名空間(namespace),你必須定義成和上面相同的XML命名空間值。此命名空間將隨著Adobe AIR的每個主要發行版本而改變(但不受次要的修訂版本影響)。命名空間的最後一個部分,如:“1.0.M6”,指出應用程式所需的AIR執行環境版本。

minimumPatchLevel:和AIR的命名空間一起決定了應用程式所需的AIR執行環境版本。一般來說,對話方塊將在必要時告知用戶下載並安裝新版或者修訂版本。

定義應用程式的基本資訊

透過底下的屬性定義應用程式的id、版本、名稱、檔名、簡介和版權資訊:

<id>com.example.samples.TestApp</id>
<version>2.0</version>
<filename>TestApp</filename>
<name>空殼公司的測試程式</name>
<description>超酷的MP3播放器</description>
<copyright>版權所有 © 2006 空殼公司</copyright>

id:代表應用程式的唯一識別字,也就是應用程式ID。此屬性值只能由下列字元組成:

  • 0-9
  • a-z
  • A-Z
  • .(點)
  • -(破折號)

此屬性值必須介於1到212個字元之間。

id 字串值通常寫成採用點字元分隔的階層結構,這種形式常見於反轉DNS網域名稱位址、JAVA套件或類別名稱,或者OS X的通用類型標識字(Universal Type Identifier)。此字串並不強制寫成DNS的形態,而且AIR程式不會和網域名稱建立任何關聯。

version:設定應用程式的版本資訊(此值和AIR執行環境版本無關)。版本字串由Adobe AIR應用程式的開發人員自行定義。AIR不會去解析這個版本字串。因此“3.0”版並不假定是比目前的 “2.0.”或“1.0”, “.4”, “0.5”, “4.9”, “1.3.4a” 版本更新。

filename:指定應用程式檔名的字串(不包含副檔名)。若未設定name的屬性值,filename值也將被當成安裝資料夾的名稱。你必須定義這個元素。

filename屬性可以包含除下列字元以外的任何Unicode (UTF-8) 字元,各種檔案系統皆禁止檔名使用這些字元:

字元

十六進制碼

右列內碼範圍的字元

0×00 – x1F

*

x2A

x22

:

x3A

x3C

x3E

?

x3F

\

x5C

|

x7C

檔名不可以用半形的點(.)字元結尾。

name:(選擇性的)AIR應用程式的安裝程式所顯示的標題文字。若有設定此值,name值也被用來當作安裝資料夾的名字(位於installFolder元素指定的資料夾裡面)。

description:(選擇性的)顯示在Adobe AIR應用程式的安裝程式裡的描述資訊。

copyright:(選擇性的)Adobe AIR應用程式的版權資訊。

定義安裝資料夾和程式選單資料夾

這些資訊透過下列的屬性定義(註:此例中的安裝資料夾名稱是Acme):

<installFolder>Acme</installFolder>
<programMenuFolder>Acme/Applications</programMenuFolder>

installFolder:(選擇性的)指定預設安裝目錄的子目錄。

在Windows 系統上,預設的安裝子目錄是Program Files目錄。在Mac OS系統裡,它是/Applications目錄。例如,若installFolder屬性設定成“Acme”,而Adobe AIR應用程式命名為“ExampleApp”,那麼在Windows系統上,這個AIR應用程式將被安裝在C:\Program Files\Acme\Example,而在Mac OS裡將被安裝在/Applications/Acme/Example.app。

如果你想指定嵌套的子目錄(亦即,子目錄底下的目錄),可以用“/”字元當作目錄分隔字元,像底下這樣:

<installFolder>Acme/Power  Tools</installFolder>

installFolder屬性可以包含除下列字元以外的任何Unicode (UTF-8) 字元,各種檔案系統皆禁止資料夾名稱使用這些字元:

字元

十六進制碼

右列內碼範圍的字元

0×00 – x1F

*

x2A

x22

:

x3A

x3C

x3E

?

x3F

\

x5C

|

x7C

installFolder屬性可有可無。如果你沒有指定這個屬性,AIR應用程式將被安裝在預設目錄之下,name屬性所指定的子目錄名稱中。

programMenuFolder:(選擇性的)指出Windows作業系統的「所有程式」選單的位置,以便放置AIR應用程式的捷徑檔(現階段,其他作業系統會忽略這項設定)。此屬性值的可用字元限制和installFolder屬性相同。

定義初始應用程式視窗的屬性

當AIR應用程式被載入時,AIR執行環境將採用initialWindow元素的值來建立應用程式的初始化視窗。AIR執行環境將接著把content元素指定的SWF或HTML檔載入視窗。

<initialWindow>
    <content>AIRTunes.html</content>
    <title>AIR收音機</title>
    <systemChrome>none</systemChrome>
    <transparent>true</transparent>
    <visible>true</visible>
    <minimizable>true</minimizable>
    <maximizable>true</maximizable>
    <resizable>true</resizable>
    <width>400</width>
    <height>600</height>
    <x>150</x>
    <y>150</y>
    <minSize>300 300</minSize>
    <maxSize>800 800</maxSize>
</initialWindow>

initialWindow的子元素設定了將載入根內容(root content)檔的視窗的屬性。

content:指定給content元素的值,是應用程式主內容檔的URL,可以是SWF或HTML檔。URL相對於應用程式安裝資料夾的路徑(當透過ADL執行AIR應用程式時,此URL是相對於包含應用程式描述檔的資料夾路徑。你可以透過ADL的root-dir參數來指定不同的根目錄)。

title:視窗的標題。

systemChrome:如果將此屬性值設定成standard,將顯示作業系統的預設樣式(chrome);若設定成none,將不顯示系統樣式。系統的預設樣式設定無法在執行時期改變。

transparent:若要讓應用程式視窗產生半透明效果,請將此屬性設定為“true”。半透明的視窗將顯示得比較慢,並且會耗用更多的記憶體空間。transparent屬性將無法在執行時期改變。

重要提示:當systemChrome設定成“none”時,只能設定transparent=”true” 。

visible:如果你想讓主視窗在被建立時顯示出來,將此值設定為“true”。預設值是“false”。

讓主視窗在初始階段保持隱藏狀態,將能先改變它的位置、大小及其內容的版面樣式。然後,再透過把(用於主視窗的)stage.window.visible屬性設定為true來顯示它。更多詳細說明請參閱Working with windows(操控視窗)這篇文章。

x, y, width, height:主視窗的座標和尺寸。如果不設定這些值,視窗的大小將由根(最上層)的SWF檔決定;若最上層的檔是HTML,寬高將由作業系統決定。

minSize, maxSize:視窗的最小和最大尺寸值。如果不設定這些值,將交由作業系統決定。

minimizable, maximizable, resizable:指定視窗是否能被最小化、最大大化、或者改變大小。這些設定的預設值都是true。

註:
在諸如Mac OS X等的作業系統上,將視窗放到最大是一個改變視窗大小的操作,maximizable和resizable都必須被設定成false,以避免視窗被放大或改變大小。

參閱:Working with windows(操控視窗)

指定AIR應用程式的圖示檔

icon 屬性用於指定一個或多個用於Adobe AIR應用程式的圖示檔。應用程式不一定要指定圖示檔,如果沒有設定icon屬性,作業系統將顯示預設的圖示。

圖示檔的路徑值相對於AIR應用程式的根目錄。圖示檔必須是PNG格式。你能替圖示檔設定下列所有尺寸值:

<icon>
    <image16x16>icons/smallIcon.png</image16x16>
    <image32x32>icons/mediumIcon.png</image32x32>
    <image48x48>icons/bigIcon.png</image48x48>
    <image128x128>icons/biggestIcon.png</image128x128> 
</icon>

一旦指定了某個大小的圖示檔屬性,那麼,該影像檔的尺寸就必須是相同的大小。假若沒有提供完整的尺寸資訊,作業系統將自行把僅有的圖檔縮放到合適的大小。

注意:
AIR程式封裝並不會自動被加入icons路徑。在封裝AIR應用程式時,這些圖示檔必須要放在正確的相對路徑中。

為了產生最佳的視覺外觀,你應該替每個可用的尺寸準備一張圖像。此外,請確保圖示影像在16和32位元色彩模式下,都能得到一致的效果。

為更新應用程式提供一個自訂使用者介面

AIR在安裝和更新應用程式時,通常使用預設的安裝對話方塊。然而,你也能在更新應用程式時,採用自己定義的使用者介面。若要指示讓應用程式自行處理更新流程,你必須把customUpdateUI元素設定成true:

<customUpdateUI>true</customUpdateUI>

一旦你安裝的AIR應用程式的customUpdateUI設定成true,那麼,當用戶雙按該AIR檔以便啟用新版本時(此應用程式和發行者的唯一識別號碼必須相同),或者透過整合(seamless)安裝功能更新應用程式時,AIR執行環境將開啟已安裝的應用程式,而不是預設的AIR應用程式安裝器。你的程式將能決定如何處理更新操作。

注意:
customUpdateUI機制僅僅在應用程式已經安裝,而且用戶雙按具有更新內容的AIR安裝檔,或者透過整合安裝功能更新應用程式時才會有作用。你當然可以透過自己設計的程式邏輯來下載並啟動更新程序,並在必要時顯示自訂的UI,無論customUpdateUI是否設定成true。

更多相關資訊請參閱:Updating AIR applications(更新AIR應用程式)文件。

允許瀏覽器啟動AIR應用程式

如果你指定了底下的設定,將能夠過瀏覽器啟動(透過按一下瀏覽器裡的網頁連結)功能開啟已安裝的AIR應用程式。

<allowBrowserInvocation>true</allowBrowserInvocation>

此預設值是false。更多相關資訊,請參閱Installing and running an AIR applications from a web page(從網頁安裝並執行AIR應用程式)文件。

定義檔案類型關聯

fileType元素讓你定義可以和AIR應用程式關聯(associate)的檔案類型(譯註:選擇使用AIR程式開啟的檔案)。安裝AIR應用程式後,如果這些檔案類型尚未關聯到其他應用程式的話,所有宣告的檔案類型將被作業系統註冊,並且關聯到AIR應用程式。

若要取代並覆蓋既有的其他應用程式與檔案類型之間的關聯,你必須在執行階段執行NativeApplication.setAsDefaultApplication()方法(修改關聯之前,最好先取得用戶的同意)。

註:AIR執行環境的方法只能管理宣告在應用程式描述檔裡的檔案類型。

<fileTypes>
    <fileType>
        <name>adobe.VideoFile</name>
        <extension>avf</extension>
        <description>Adobe視訊檔</description>
        <contentType>application/vnd.adobe.video-file</contentType>
        <icon>
            <image16x16>icons/AIRApp_16.png</image16x16>      
            <image32x32>icons/AIRApp_32.png</image32x32>      
            <image48x48>icons/AIRApp_48.png</image48x48>     
            <image128x128>icons/AIRApp_128.png</image128x128>
        </icon>
    </fileType>
</fileTypes>

fileTypes元素是選擇性的。如果有設定,它可以包含任何數量的fileType元素。

每個fileType宣告都要有name(名稱)和extension(副檔名)元素。不同的extension可以使用相同的name值。extension值即是特定檔案類型的唯一識別字(註:extension值不包括副檔名前面的點符號)。description(簡介)元素是選擇性的,並且是經由作業系統的使用者介面呈現給用戶。contentType(內容類型)元素也是選擇性的,但它有助於作業系統選擇採用哪個應用軟體來開啟指定的檔案。它的值應該是該檔內容的MIME類型。

icon元素能指定檔案類型的圖示外觀,其語法格式和application的icon元素相同。圖示檔也必須包含在AIR安裝檔裡面(它們不會自動被納入AIR檔)。

若某個檔案類型已經和AIR應用程式關聯,當用戶開啟那個類型的檔案時,該AIR應用程式將會被啟動。若該AIR應用程式已經處於執行狀態,AIR將會發出InvokeEvent物件給執行中的實體。否則,AIR將首先啟動應用程式。在這兩種情況下,被選取檔案的路徑都可以從NativeApplication物件發出的InvokeEvent物件取得。程式將能經由此路徑來開啟該檔。

參閱:

Posts created 468

2 thoughts on “設定Adobe AIR應用程式的屬性

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top