「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物件取得。程式將能經由此路徑來開啟該檔。
參閱:
- Managing file associations(管理檔案關聯)
- Capturing command line arguments(捕捉命令列參數)
2 thoughts on “設定Adobe AIR應用程式的屬性”