一个本机扩展通常面向多种平台。例如,一个扩展可以面向运行 iOS 的设备和运行 Android 的设备。在这种情况下,您的 ActionScript 类实现和本机代码实现(包括本机代码语言)可能因目标平台而异。
对于 ActionScript 扩展类,最佳做法是提供与其实现无关的相同 ActionScript 公共接口。通过保持相同的公共接口,可以创建一个真正的跨平台本机扩展。如果 ActionScript 公共接口相同,但 ActionScript 实现不同,则需要为每个平台创建一个不同的 ActionScript 库。
您还可以为某些目标平台创建没有本机代码实现的扩展。此类扩展在以下情形中非常有用:
-
只有一些目标平台支持所需功能的本机实现时。
扩展可以在这些平台上使用本机实现,但在其他平台上使用仅 ActionScript 实现。例如,假设一个平台为计算机进程之间的通信提供专用机制。对于该平台,扩展具有一个本机实现。对于另一平台,该扩展采用使用 ActionScript Socket 类的仅 ActionScript 实现。
当应用程序开发人员使用扩展时,他们可以编写一个应用程序,无需了解扩展在不同目标平台上的实现方式。
-
在测试扩展时。
假设有一个本机扩展使用移动设备的特定功能。您可以为桌面创建仅 ActionScript 扩展。然后,应用程序开发人员可以在开发期间使用该桌面扩展进行模拟测试,然后才在实际目标设备上测试。同样,作为扩展开发人员,您也可以在涉及本机代码实现之前测试扩展的 ActionScript 端。
在发布扩展时,可以在扩展描述符文件的
<platform>
元素中指定目标平台。每个
<platform>
元素指定一个目标,如
iPhone-ARM
或
Windows-x86。
您还可以指定一个名为
default
的
<platform>
元素。
default
平台有一个未使用
<platform>
元素指定的、在所有平台上使用的仅 ActionScript 实现。有关详细信息,请参阅
本机扩展描述符文件
。
注:
针对至少一个目标平台的实现必须包含本机代码。如果无任何目标平台需要本机代码,则使用本机扩展不是正确选择。在这样的情况下,请创建一个 SWC 库。