您可以使用平台选项 (platform.xml) 文件来指定特定于 iOS 的选项以链接到其他框架和库,或者在您的本机扩展中绑定第三方框架或库。当您在
-platform
标志之后为 iOS 指定
-platformoptions
标志,以此来打包扩展时,平台选项文件即添加到 ANE。稍后,当开发人员创建使用您的扩展的应用程序 IPA 文件时,ADT 会使用 platform.xml 文件中的选项链接到其他库并包含绑定的依赖项。
注:
平台选项文件的名称可以任意,不要求将其命名为“platform.xml”。
您可以将 iOS 平台选项文件用于 iPhone-ARM(设备)和 iPhone-x86(iOS 模拟器)平台。
platform 选项文件需要 AIR 3.1 或更高版本。
使用
packagedDependencies
功能打包用于 iOS 的 ANE 时,添加
<option>-rpath @executable_path/Frameworks</option>
在
linkerOptions
标签内(
platformoptions.xml
中)。
iOS 链接器选项
iOS 链接器选项为您提供一种将任意选项传递给链接器的方式。指定选项在传递给链接器时会保持原样。您可以使用这种方式链接到其他框架和库,例如其他 iOS 框架。要指定链接器选项,请在平台选项 xml 文件中使用
<linkerOptions>
标签。在
<linkerOptions>
标签内,指定包含在
<options>
标签对中的每个链接选项,如下例所示:
<linkerOptions>
<option>-ios_version_min 5.0</option>
<option>-framework Accelerate</option>
<option>-liconv</option>
</linkerOptions>
任何以此方式链接的依赖项必须分发给使用您的本机扩展从本机扩展本身分离的开发人员。这对于 iOS 包含的而非 AIR 默认链接的其他库最为有用。您还可以使用此选项让开发人员链接到单独提供给他们的静态库。
<linkerOptions>
标签需要 AIR 3.3 或更高版本。
打包的第三方依赖项
有时,您希望在本机扩展中使用静态库(例如,本机第三方库),而无需访问该库的源代码,或者无需开发人员访问从您的扩展分离的库。您可以通过将静态库指定为打包的依赖项,将其绑定到您的本机扩展。在 platform 选项 xml 文件中使用
<packagedDependencies>
标签。对于每个要包含在扩展包中的依赖项,指定以
<packagedDependency>
标签对括起的名称或相对路径,如下例所示:
<packagedDependencies>
<packagedDependency>foo.a</packagedDependency>
<packagedDependency>abc/x.framework</packagedDependency>
<packagedDependency>lib.o</packagedDependency>
</packagedDependencies>
打包的依赖项应当是具有以下扩展之一的静态库:
.a
、
.framework
或
.o
。该库应支持在设备上使用 ARMv7 体系结构,在 iOS 模拟器上使用 i386 体系结构。
打包本机扩展时,您必须将依赖项的名称指定为
-platformoptions
标志的参数。在 platform.xml 文件的文件名之后、任何后续的
-package
标志之前列出依赖项,如下例所示:
adt -package <signing options> -target ane MyExtension.ane MyExt.xml -swc MyExtension.swc
-platform iPhone-ARM -platformoptions platformiOSARM.xml
foo.a abc/x.framework lib.o -C platform/ios .
-platform iPhone-x86 -platformoptions platformiOSx86.xml
-C platform/iosSimulator
-platform default -C platform/default library.swf
<packagedDependencies>
标签需要 AIR 3.5 或更高版本。
使用专用的嵌入框架
要创建具有 Xcode6 或更高版本的 iOS ANE,可使用专用的框架:
-
编辑 platform.xml,添加
<option>-rpath @executable_path/Frameworks</option>
在
linkerOptions
标签内。
例如:
</description>
<linkerOptions>
<option>-ios_version_min 5.1.1</option>
<option>-rpath @executable_path/Frameworks</option>
</linkerOptions>
<packagedDependencies>
<packagedDependency>SampleFramework.framework</packagedDependency>
</packagedDependencies>
-
在现有的 iPhone-ARM 文件夹中创建一个名为 Frameworks 的文件夹。
-
将专用框架复制到 Frameworks 文件夹,并将该框架与 ANE 打包在一起。
复制专用框架
platform 选项 (platform.xml) 文件示例
以下列表显示了一个平台选项 (platform.xml) 文件结构的示例:
<platform xmlns="http://ns.adobe.com/air/extension/3.5">
<description>An optional description.</description>
<copyright>2011 (optional)</copyright>
<sdkVersion>5.0.0</sdkVersion>
<linkerOptions>
<option>-ios_version_min 5.0</option>
<option>-framework Accelerate</option>
<option>-liconv</option>
</linkerOptions>
<packagedDependencies>
<packagedDependency>foo.a</packagedDependency>
<packagedDependency>abc/x.framework</packagedDependency>
<packagedDependency>lib.o</packagedDependency>
</packagedDependencies>
</platform>
要在本机扩展包中包含此平台选项文件,您可以使用如下 ADT 命令:
adt -package <signing options> -target ane MyExtension.ane MyExt.xml -swc MyExtension.swc
-platform iPhone-ARM -platformoptions platformiOSARM.xml
foo.a abc/x.framework lib.o -C platform/ios .
-platform iPhone-x86 -platformoptions platformiOSx86.xml
-C platform/iosSimulator
-platform default -C platform/default library.swf