昨晚在导出air的发行版本的时候爆出了这个错误,在最后一步,error306,Descriptor must support one of the following
这个桑心啊!原来是配置文件错了,具体解释如下,在adobe的官网找到的,我把-app.xml的 <supportedProfiles>extendedDesktop</supportedProfiles>配置文件是一种机制,用于定义应用程序运行所在的计算设备的类。一个配置文件定义一组 API 和功能,它们通常在特定类的设备上受支持。可用的配置文件包括:
-
桌面
-
extendedDesktop
-
mobileDevice
-
extendedMobileDevice
-
tv
-
extendedTV
您可以在应用程序描述符中定义应用程序的配置文件。所包含配置文件中的计算机和设备的用户可以安装应用程序,其他计算机和设备的用户则不能。例如,如果在应用程序描述符中仅包含桌面配置文件,则用户只能在桌面计算机上安装和运行应用程序。
如果应用程序并不真正支持所包含的配置文件,则此类环境下的用户体验可能很差。如果在应用程序描述符中没有指定任何配置文件,则 AIR 不会对应用程序施加任何限制。您可以使用任意一种支持的格式来打包应用程序,而且任何配置文件中的设备的用户都可以安装该应用程序,但是它可能无法在运行时正常工作。
系统会尽可能地在您打包应用程序时施加配置文件限制。例如,如果仅包含 extendedDesktop 配置文件,则无法将应用程序打包成 AIR 文件,而只能打包成本机安装程序。同样地,如果仅包含 mobileDevice 配置文件,则无法将应用程序打包成 Android APK。
单个计算设备可支持多个配置文件。例如,桌面计算机上的 AIR 支持桌面配置文件应用程序和 extendedDesktop 配置文件应用程序。但是,扩展的桌面配置文件应用程序可以与本机进程通信,而且必须打包成本机安装程序(exe、dmg、deb 或 rpm)。而桌面配置文件应用程序则无法与本机进程通信。桌面配置文件应用程序可以打包成 AIR 文件或本机安装程序。
在配置文件中包含功能,表示定义了该配置文件的设备类通常支持该功能。但是,这并不表示配置文件中的每种设备支持每种功能。例如,大多数(但并非全部)移动电话都包含一个加速度计。不具有通用支持的类和功能通常有一个布尔属性,您可以在使用功能之前检查该属性。例如,对于加速度计的情况,您可以测试静态属性 Accelerometer.isSupported 以确定当前设备是否拥有支持的加速度计。
在应用程序描述符中使用 supportedProfiles 元素可以将以下配置文件分配给 AIR 应用程序:
-
桌面
- 桌面配置文件为作为 AIR 文件安装在桌面计算机上的 AIR 应用程序定义一组功能。这些应用程序将在支持的桌面平台(Mac OS、Windows 和 Linux)上安装并运行。在 AIR 2 以前的 AIR 版本中开发的 AIR 应用程序可视为位于桌面配置文件中。某些 API 在此配置文件中无法正常运行。例如,桌面应用程序无法与本机进程通信。 扩展的桌面
- 扩展的桌面配置文件为打包到本机安装程序并随之一起安装的 AIR 应用程序定义一组功能。这些本机安装程序是 Windows 上的 EXE 文件、Mac OS 上的 DMG 文件和 Linux 上的 BIN、DEB 或 RPM 文件。扩展的桌面应用程序具有在桌面配置文件应用程序中不可用的其他功能。有关更多信息,请参阅 对桌面本机安装程序进行打包。 移动设备
- 移动设备配置文件可为安装在移动设备(例如手机和平板电脑)上的应用程序定义一组功能。这些应用程序可在受支持的移动平台(包括 Android、Blackberry Tablet OS 和 iOS)上安装并运行。 扩展的移动设备
- 扩展的移动设备配置文件为安装在移动设备上的应用程序定义一组扩展功能。目前,没有支持此配置文件的设备。 TV
- 电视配置文件为电视定义一组功能。该配置文件还包含将电视用作主显示器的设备,如蓝光光盘播放机、数码录像机和机顶盒。该配置文件中的应用程序不能使用 Adobe AIR 的本机扩展。 扩展的电视
- 扩展的电视配置文件所涵盖的设备类型与电视配置文件相同,但包括了附加功能,如 Adobe AIR 的本机扩展。
限制应用程序描述符文件中的目标配置文件
<supportedProfiles>desktop</supportedProfiles>
设置此元素后,只能在您列出的配置文件中打包应用程序。使用下列值:
-
desktop — 桌面配置文件
-
extendedDesktop — 扩展的桌面配置文件
-
mobileDevice — 移动设备配置文件
-
tv - 电视配置文件
-
extendedTV - 扩展的电视配置文件
supportedProfiles 元素是可选的。如果应用程序描述符文件中不包括此元素,应用程序可以针对任何配置文件进行打包和部署。
要在 supportedProfiles 元素中指定多个配置文件,请使用空格字符将配置文件彼此隔开,如下所示:
<supportedProfiles>desktop extendedDesktop</supportedProfiles>
不同配置文件的功能
下表列出了所有配置文件中都不支持的类和功能。
类或功能 | 桌面 | extendedDesktop | mobileDevice | tv | extendedTV |
---|---|---|---|---|---|
Accelerometer (Accelerometer.isSupported) | 否 | 否 | 需检查 | 否 | 否 |
Accessibility (Capabilities.hasAccessibility) | 是 | 是 | 否 | 否 | 否 |
回音消除 (Microphone.getEnhancedMicrophone()) | 是 | 是 | 否 | 否 | 否 |
ActionScript 2 | 是 | 是 | 否 | 是 | 是 |
CacheAsBitmap 矩阵 | 否 | 否 | 是 | 是 | 是 |
Camera (Camera.isSupported) | 是 | 是 | 是 | 否 | 否 |
CameraRoll | 否 | 否 | 是 | 否 | 否 |
CameraUI (CameraUI.isSupported) | 否 | 否 | 是 | 否 | 否 |
捕获运行时捆绑 | 是 | 是 | 是 | 否 | 否 |
ContextMenu (ContextMenu.isSupported) | 是 | 是 | 否 | 否 | 否 |
DatagramSocket (DatagramSocket.isSupported) | 是 | 是 | 否 | 否 | 否 |
DockIcon (NativeApplication.supportsDockIcon) | 需检查 | 需检查 | 否 | 否 | 否 |
拖放 (NativeDragManager.isSupported) | 是 | 是 | 需检查 | 否 | 否 |
EncyptedLocalStore (EncyptedLocalStore.isSupported) | 是 | 是 | 是 | 否 | 否 |
Flash Access (DRMManager.isSupported) | 是 | 是 | 否 | 是 | 是 |
GameInput (GameInput.isSupported) | 否 | 否 | 否 | 是 | 是 |
Geolocation (Geolocation.isSupported) | 否 | 否 | 需检查 | 否 | 否 |
HTMLLoader (HTMLLoader.isSupported) | 是 | 是 | 否 | 否 | 否 |
IME (IME.isSupported) | 是 | 是 | 需检查 | 否 | 否 |
LocalConnection (LocalConnection.isSupported) | 是 | 是 | 否 | 是 | 是 |
Microphone (Microphone.isSupported) | 是 | 是 | 需检查 | 否 | 否 |
多频道音频 (Capabilities.hasMultiChannelAudio()) | 否 | 否 | 否 | 需检查 | 需检查 |
本机扩展 | 否 | 是 | 是 | 否 | 是 |
NativeMenu (NativeMenu.isSupported) | 是 | 是 | 否 | 否 | 否 |
NativeProcess (NativeProcess.isSupported) | 否 | 是 | 否 | 否 | 否 |
NativeWindow (NativeWindow.isSupported) | 是 | 是 | 否 | 否 | 否 |
NetworkInfo (NetworkInfo.isSupported) | 是 | 是 | 需检查 | 是 | 是 |
使用默认应用程序打开文件 | 有限制 | 是 | 否 | 否 | 否 |
PrintJob (PrintJob.isSupported) | 是 | 是 | 否 | 否 | 否 |
SecureSocket (SecureSocket.isSupported) | 是 | 是 | 否 | 需检查 | 需检查 |
ServerSocket (ServerSocket.isSupported) | 是 | 是 | 否 | 否 | 否 |
Shader | 是 | 是 | 有限制 | 否 | 否 |
Stage3D (Stage.stage3Ds.length) | 是 | 是 | 是 | 是 | 是 |
舞台方向 (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 将生成错误。