裝置描述檔
Adobe AIR 2 以及更新的版本
描述檔是一種機制,用以定義應用程式運作的計算裝置類別。描述檔會定義一組特定裝置類別通常支援的 API 與功能。可用的描述檔包括:
desktop
extendedDesktop
mobileDevice
extendedMobileDevice
tv
extendedTV
您可以在應用程式描述器中定義您的應用程式描述檔。使用描述檔所述之電腦與裝置的使用者可以安裝您的應用程式,而使用其他電腦與裝置的使用者則無法安裝。例如,如果您在應用程式描述器中只包括桌上型描述檔,則使用者只能在桌上型電腦上安裝和執行您的應用程式。
如果您的應用程式無法真正支援您使用的描述檔,則在這樣環境下的使用者經驗可能會不佳。如果未在應用程式描述器中指定任何描述檔,則 AIR 不會限制您的應用程式。您可以使用任何支援的格式來封裝應用程式,而使用任何描述檔的裝置使用者都可以安裝它,不過,應用程式有可能在執行階段無法正常運作。
因此當您封裝應用程式時,請盡可能強制描述檔限制。例如,如果您只包括 extendedDesktop 描述檔,您便無法將應用程式封裝成 AIR 檔案,只能封裝成原生安裝程式。同樣地,如果您未包括 mobileDevice 描述檔,則無法將應用程式封裝為 Android APK。
單一電腦裝置可以支援多個描述檔。例如,桌上型電腦上的 AIR 同時支援 desktop 描述檔與 extendedDesktop 描述檔中的應用程式。不過,延伸桌上型描述檔應用程式可以和原生處理程序通訊,而且「必須」封裝為原生安裝程式 (exe、dmg、deb 或 rpm)。另一方面,桌上型描述檔應用程式無法與原生處理程序通訊。桌上型描述檔應用程式可以封裝成 AIR 檔案或原生安裝程式。
包括在描述檔中的功能表示描述檔中所定義的裝置類別通常可支援該功能。不過,並不表示描述檔中的每個裝置皆可支援每項功能。例如,大部分但並非所有的行動電話都包含加速計。不普遍支援的類別與功能通常具有Boolean 屬性,您可以在使用該功能前進行檢查。例如,以加速計為例,您可以測試靜態屬性 Accelerometer.isSupported,以判斷目前的裝置是否具有支援的加速計。
您可以使用應用程式描述器中的 supportedProfiles 元素,將下列描述檔指定給 AIR 應用程式:
- 桌上型
- 桌上型描述檔會針對在桌上型電腦中安裝為 AIR 檔案的 AIR 應用程式,定義一組功能。這些應用程式會在支援的桌上型平台 (Mac OS、Windows 以及 Linux) 上安裝和執行。在 AIR 2 版本之前開發的 AIR 應用程式都可視為使用桌上型描述檔。有些 API 在此描述檔中無法運作。例如,桌面應用程式無法與原生程序通訊。
- 延伸桌上型
- 延伸桌上型描述檔會針對以原生安裝程式封裝和安裝的 AIR 應用程式,定義一組功能。這些原生安裝程式在 Windows 上為 EXE 檔,在 Mac OS 上為 DMG 檔,而在 Linux 上則為 BIN、DEB 或 RPM 檔。延伸桌上型應用程式具有桌上型描述檔應用程式所沒有的額外功能。如需詳細資訊,請參閱封裝桌上型原生安裝程式。
- 行動裝置
- 行動裝置描述檔會針對行動裝置上安裝的應用程式定義一組功能。您可以使用 ActionScript 3.0 與 AIR API 來建立 Android、iPhone、iPod Touch 以及 iPad 適用的應用程式。目前只有這些裝置支援行動裝置描述檔應用程式。
- 延伸行動裝置
- 延伸行動裝置描述檔會針對部分行動裝置上安裝的應用程式定義一組功能。這部分的行動裝置除了可使用針對行動裝置描述檔定義的功能之外,還可以使用 HTMLLoader 類別。但目前並無任何裝置支援此描述檔。
- TV
- 電視描述檔會定義一組電視的功能。描述檔也包括將電視做為主要顯示方式的裝置,例如,藍光光碟播放機、數位視訊錄影機,以及機上盒。此描述檔中的應用程式無法使用 ActionScript 擴充功能。
- 延伸 TV
- 延伸電視描述檔中不僅涵蓋電視描述檔所涵蓋的相同裝置類型,同時還包括額外功能 (例如 ActionScript 擴充功能)。
在應用程式描述器檔案中限制目標描述檔
從 AIR 2 開始,應用程式描述器檔案包含一個
supportedProfiles 元素,此元素可讓您限制目標描述檔。例如,下列設定指定應用程式只能使用桌上型描述檔:
<supportedProfiles>desktop</supportedProfiles>
設定此元素時,應用程式只能以您列出的描述檔來封裝。請使用下列的值:
desktop:桌上型描述檔
extendedDesktop:延伸桌上型描述檔
mobileDevice:行動裝置描述檔
tv:電視描述檔
extendedTV:延伸電視描述檔
supportedProfiles 是選擇性元素。若您未在應用程式描述器檔案中包含這個元素,則您可以使用任何描述檔來封裝和部署應用程式。
若要在 supportedProfiles 元素指定多個描述檔,請使用空格字元分隔每個檔案,如下所示:
<supportedProfiles>desktop extendedDesktop</supportedProfiles>
不同描述檔的功能
下表列出所有描述檔均不支援的類別與功能。
類別或功能
|
desktop
|
extendedDesktop
|
mobileDevice
|
tv
|
extendedTV
|
Accelerometer (Accelerometer.isSupported)
|
否
|
否
|
檢查
|
否
|
否
|
Accessibility (Capabilities.hasAccessibility)
|
是
|
是
|
否
|
否
|
否
|
ActionScript 2
|
是
|
是
|
否
|
是
|
是
|
CacheAsBitmap matrix
|
否
|
否
|
是
|
是
|
是
|
Camera (Camera.isSupported)
|
是
|
是
|
是
|
否
|
否
|
CameraRoll
|
否
|
否
|
是
|
否
|
否
|
CameraUI (CameraUI.isSupported)
|
否
|
否
|
是
|
否
|
否
|
ContextMenu (ContextMenu.isSupported)
|
是
|
是
|
否
|
否
|
否
|
DatagramSocket (DatagramSocket.isSupported)
|
是
|
是
|
否
|
否
|
否
|
DockIcon (NativeApplication.supportsDockIcon)
|
檢查
|
檢查
|
否
|
否
|
否
|
Drag-and-drop (NativeDragManager.isSupported)
|
是
|
是
|
檢查
|
否
|
否
|
EncyptedLocalStore (EncyptedLocalStore.isSupported)
|
是
|
是
|
否
|
否
|
否
|
ExtensionContext
|
否
|
否
|
否
|
否
|
是
|
Flash Access (DRMManager.isSupported)
|
是
|
是
|
否
|
是
|
是
|
Geolocation (Geolocation.isSupported)
|
否
|
否
|
檢查
|
否
|
否
|
HTMLLoader (HTMLLoader.isSupported)
|
是
|
是
|
否
|
否
|
否
|
IME (IME.isSupported)
|
是
|
是
|
檢查
|
否
|
否
|
LocalConnection (LocalConnection.isSupported)
|
是
|
是
|
否
|
是
|
是
|
Microphone (Microphone.isSupported)
|
是
|
是
|
檢查
|
否
|
否
|
NativeMenu (NativeMenu.isSupported)
|
是
|
是
|
否
|
否
|
否
|
NativeProcess (NativeProcess.isSupported)
|
否
|
是
|
否
|
否
|
否
|
NativeWindow (NativeWindow.isSupported)
|
是
|
是
|
否
|
否
|
否
|
NetworkInfo (NetworkInfo.isSupported)
|
是
|
是
|
檢查
|
是
|
是
|
以預設應用程式開啟檔案
|
受限
|
是
|
否
|
否
|
否
|
PrintJob (PrintJob.isSupported
|
是
|
是
|
否
|
否
|
否
|
SecureSocket (SecureSocket.isSupported)
|
是
|
是
|
否
|
檢查
|
檢查
|
ServerSocket (ServerSocket.isSupported)
|
是
|
是
|
否
|
否
|
否
|
Shader
|
是
|
是
|
受限
|
否
|
否
|
Stage orientation (Stage.supportsOrientationChange)
|
否
|
否
|
是
|
否
|
否
|
StageVideo
|
否
|
否
|
否
|
是
|
是
|
StageWebView (StageWebView.isSupported)
|
是
|
是
|
是
|
否
|
否
|
登入時啟動應用程式 (NativeApplication.supportsStartAtLogin)
|
是
|
是
|
否
|
否
|
否
|
StorageVolumeInfo (StorageVolumeInfo.isSupported)
|
是
|
是
|
否
|
檢查
|
檢查
|
系統閒置模式
|
否
|
否
|
是
|
否
|
否
|
SystemTrayIcon (NativeApplication.supportsSystemTrayIcon)
|
檢查
|
檢查
|
否
|
否
|
否
|
Text Layout Framework 輸入
|
是
|
是
|
否
|
否
|
否
|
Updater (Updater.isSupported)
|
是
|
否
|
否
|
否
|
否
|
XMLSignatureValidator (XMLSignatureValidator.isSupported)
|
是
|
是
|
否
|
是
|
是
|
表格中的項目意義如下:
「檢查」— 描述檔中的某些裝置 (但並非所有裝置) 支援這項功能。您應該在使用之前於執行階段檢查是否支援此功能。
「受限」— 支援此功能,但是有許多限制。如需詳細資訊,請參閱相關的文件。
「否」— 描述檔不支援此功能。
「是」— 描述檔支援此功能。請注意,個別的計算裝置可能會缺少某項功能所需的硬體。例如,並非所有的電話都有相機。
以 ADL 除錯時指定描述檔
ADL 會檢查您是否在應用程式描述器檔案的 supportedProfiles 元素中指定支援的描述檔。如有指定,ADL 預設會在除錯時使用列出的第一個支援描述檔。
您可以使用 -profile 命令列引數來指定 ADL 除錯工作階段的描述檔 (請參閱 AIR Debug Launcher (ADL))不論是否已在應用程式描述器檔案的 supportedProfiles 元素中指定描述檔,您都可以使用此引數。不過,如果您已指定 supportedProfiles 元素,則該元素必須包含您在命令列指定的描述檔。否則,ADL 會產生錯誤。