本机扩展向后兼容性

向后兼容性和扩展的公共接口

一种最佳做法是在您的扩展的 ActionScript 公共接口中保持向后兼容性。请在该扩展的所有后续版本中继续支持该扩展的类、方法、属性和事件。

设备绑定扩展有一个更复杂的向后兼容性问题。有时,在扩展的不同版本之间,扩展的 行为 是不同的。例如,在该扩展的新版本中,某个特定方法返回一个具有新含义的值。当设备绑定扩展发生此行为时,某个应用程序可能会停止正常工作。如果在生成应用程序时使用的扩展版本与设备上安装的扩展版本具有不同的行为,则可能发生此问题。在此情况下,应用程序期待一个行为,但已安装的扩展提供一个不同的行为。

在这样的情况下,设备上安装的扩展可以决定如何继续。扩展可以完成下列工作:

  • 查询生成该 AIR 应用程序所使用的扩展版本以及设备上安装的版本。

  • 确定两个版本中扩展的行为是否不同。

  • 如果 AIR 应用程序是用该扩展的旧版本生成的,请恢复到旧版本的行为。

    注: 用扩展的新版本生成的 AIR 应用程序通常在设备上不可用。有关详细信息,请参阅 向后兼容性和设备的应用程序存储

要查询生成应用程序所使用的扩展版本号,请执行下列操作:

  1. 使用 File.applicationDirectory 获取应用程序安装目录。

  2. 使用 File 类 API 访问生成该应用程序所使用的扩展的 extension.xml 文件。该文件位于:

    <application directory>/META-INF/AIR/extensions/<extensionID>/META-INF/ANE/extension.xml
  3. 读取 extension.xml 文件的内容并查找 <versionNumber> 元素的值。

要查询已安装扩展的版本号,请执行下列操作:

  1. 使用静态方法 ExtensionContext.getExtensionDirectory() 获取扩展的基本目录。

  2. 使用 File 类 API 访问设备上安装的扩展的 extension.xml 文件。该文件位于:

    <extension base directory>/META-INF/ANE/extension.xml
  3. 读取 extension.xml 文件的内容并查找 <versionNumber> 元素的值。

向后兼容性和设备的应用程序存储

如果生成 AIR 应用程序所使用的扩展版本比设备上安装的扩展版本新,则该应用程序通常在此设备上不可用。该应用程序不可用的原因在于设备制造商处理从设备的应用程序存储发送到服务器的下载此类应用程序的请求的方式。Adobe 向设备制造商推荐以下处理方式:

  • 考虑服务器下载使用该扩展的较新版本的应用程序的情况。服务器也会下载该扩展的较新版本。设备的应用程序存储同时安装应用程序和该扩展的较新版本。

  • 考虑服务器无法下载该扩展的较新版本的情况。服务器也不会下载使用该版本扩展的应用程序。设备的应用程序存储正常处理这一情况,并且根据需要通知最终用户。

  • 考虑服务器下载使用较新版本扩展的应用程序,但不下载较新版本扩展的情况。设备的应用程序存储不允许最终用户运行该应用程序。应用程序存储正常处理这一情况,并且根据需要通知最终用户。