天天看点

air 移动开发配置文件详解

说明:

作者之前做过一年的flex air移动跨平台开发,在之前学习过程中,一直是将笔记记在了evernote上,有的笔记是自己写的,也有的笔记是在网上看到,顺手记下了的。 所以在这里声明下,如果在网上看到类似的或者是一模一样的文章,请见谅。

因为找不到原文作者,所以,不在我的博客里说明是转载自哪里了,望原文作者见谅。

air 移动开发配置文件详解

目录 

所需的 air 运行时版本 

应用程序标识 

应用程序版本 

主应用程序 swf 

主屏幕属性 

支持的配置文件 

必需的本机扩展 

虚拟键盘行为 

--------------- 

某些应用程序描述符设置对所有移动设备应用程序都很重要。 

使用应用程序描述符文件的命名空间指定应用程序所需的 air 运行时版本。 

在 application 元素中分配的命名空间,很大程度上决定了应用程序可以使用哪些功能。例如,如果应用程序使用 air 2.7 命名空间,但用户安装了某个未来版本,那么应用程序仍将参照 air 2.7 的行为(即使在未来版本中已经更改此行为)。只有当您更改命名空间并发布更新时,应用程序才会访问新的行为和功能。不过,安全修补程序不受此规则限制。 

如果设备(如 android)所使用的运行时不同于应用程序使用的运行时,那么当用户没有所需的 air 版本时,系统将提示用户进行安装或升级。在 iphone 等包含运行时的设备上,不会发生这种情况(因为需要的版本和应用程序已经在一开始就打包在一起了)。 

使用根 application 元素的 xmlns 属性指定命名空间。应该将下列命名空间用于移动应用程序(具体取决于您的目标移动平台): 

ios 4+ and iphone 3gs+ or android: 

<application xmlns="http://ns.adobe.com/air/application/2.7"> 

ios only: 

<application xmlns="http://ns.adobe.com/air/application/2.0"> 

注: 基于 air 2.0 sdk,packager for iphone sdk 提供针对 ios 3 设备的支持。有关构建 ios 3 的 air 应用程序的信息,请参阅构建 iphone 应用程序。air 2.6 sdk(和更高版本)在 iphone 3g、iphone 4 和 ipad 设备上支持 ios 4 及更高版本。 

对于发布的每个应用程序,以下几个设置应该是唯一的。包括 id、名称和文件名。 

android 应用程序 id 

在 android 上,通过为 air id 加上前缀“air.”将其转换为 android 包名称。这样的话,如果 air id 是 com.example.myapp,那么 android 包名称是 air.com.example.myapp。 

<id>com.example.myapp</id> 

<name>my application</name> 

<filename>myapplication</filename> 

此外,如果该 id 在 android 操作系统上不是合法的包名称,它会转换成合法名称。连字符会更改成下划线;若任何 id 组件以数字开头,会在前面加上大写字母“a”。例如,id:3-goats.1-boat,会转换成包名称:air.a3_goats.a1_boat。 

注: 添加到应用程序 id 的前缀可以用于标识 android market 中的 air 应用程序。如果不希望应用程序因前缀而被标识为 air 应用程序,您必须对 apk 文件进行解包,更改应用程序 id,并按照 opt-out of air application analytics for android 中的说明将其重新打包。 

ios 应用程序 id 

请将 air 应用程序 id 设置为与您在 apple ios provisioning portal 中创建的应用程序 id 匹配。 

ios 应用程序 id 包含捆绑种子 id,后面跟着捆绑标识符。捆绑种子 id 是 apple 分配给应用程序 id 的一个字符串,例如 5rm86z4djm。捆绑标识符包含一个您选择的反向域样式名称。捆绑标识符可能以星号 (*) 结尾,表示通配符应用程序 id。如果捆绑标识符以通配符结尾,您可以使用任意合法字符串替换该通配符。

例如: 

如果您的 apple 应用程序 id 为 5rm86z4djm.com.example.helloworld,则您在应用程序描述符中必须使用 com.example.helloworld。 

如果您的 apple 应用程序 id 为 96lpvweasl.com.example.*(通配符应用程序 id),则您可以使用 com.example.helloworld 或 com.example.anotherapp,或者以 com.example 开头的其他 id。 

最后,如果您的 apple 应用程序 id 只是捆绑种子 id 和通配符,如:38je93kjl.*,则您可以在 air 中使用任意应用程序 id。 

指定应用程序 id 时,请不要包括应用程序 id 的捆绑种子 id 部分。 

在 air 2.5 和更高版本中,可以在 versionnumber 元素中指定应用程序版本。不能再使用 version 元素。当为 versionnumber 指定值时,必须使用由点分隔的最多三个数字组成的序列,例如:“0.1.2”。版本号的每段最多可以具有三个数字。(即,“999.999.999”是允许的最大版本号)。不必将所有三段都包含在号码中;“1”和“1.0”都是合法的版本号。 

也可以使用 versionlabel 元素来指定版本标签。如果添加了版本标签,就会显示版本标签,而不是像在 android 应用程序信息屏幕等处一样显示版本号。必须为使用 android market 分发的应用程序指定版本标签。如果没有在 air 应用程序描述符中指定 versionlabel 值,则会将 versionnumber 值分配给 android 版本标签字段。 

<!-- air 2.5 and later --> 

<versionnumber>1.23.7<versionnumber> 

<versionlabel>1.23 beta 7</versionlabel> 

在 android 上,air versionnumber 转换为 android 整数 versioncode,转换公式为:a*1000000 + b*1000 + c,其中 a、b 和 c 分别代表 air 版本号的组成部分:a.b.c。 

在 initialwindow 元素的 content 子元素中指定主应用程序 swf 文件。在移动配置文件中定位设备时,必须使用 swf 文件(不支持基于 html 的应用程序)。 

<initialwindow> 

    <content>myapplication.swf</content> 

</initialwindow> 

必须包括 air 包中的文件(使用 adt 或 ide)。如果只是引用应用程序描述符中的名称,不会自动将此文件包括进包中。 

initialwindow 元素的若干子元素控制主应用程序屏幕的初始外观和行为。 

aspectratio — 指定应用程序的初始显示方式为 portrait 格式(高大于宽)、landscape 格式(高小于宽)或 any 格式(舞台可自动调整到任何方向)。 

<aspectratio>landscape</aspectratio> 

autoorients — 指定舞台是否应随着用户旋转设备或做出与方向相关的其他手势(如打开或关闭滑动键盘)而自动改变方向。如果设置为 false(默认),则舞台不会随设备改变方向。 

<autoorients>true</autoorients> 

depthandstencil — 指定使用深度或模板缓冲区。通常在处理 3d 内容时使用这些缓冲区。 

<depthandstencil>true</depthandstencil> 

fullscreen — 指定应用程序应占据设备的整个显示屏,还是与标准操作系统窗口样式(如系统状态栏)共享显示屏。 

<fullscreen>true</fullscreen> 

rendermode — 指定运行时应使用图形处理单元 (gpu) 还是主要的中心处理单元 (cpu) 渲染应用程序。通常,gpu 渲染可以提高渲染速度,但某些功能(例如某些混合模式和 pixelbender 筛选器)在 gpu 模式下无法使用。此外,不同设备和不同设备驱动程序的 gpu 功能和限制是不同的。应始终在尽可能多的设备上测试应用程序,特别是使用 gpu 模式时。可以将渲染模式设置为

gpu、cpu、direct 或 auto。 默认值是 auto,该设置目前回退到 cpu 模式。 

注: 为了利用具有移动平台 air flash 内容的 gpu 加速,adobe 建议使用 rendermode=”direct”(即 stage3d),而不是 rendermode=”gpu”。adobe 官方支持和建议以下基于 stage3d 的框架:starling (2d) 和 away3d (3d)。有关 stage3d 和 starling/away3d 的更多细节,请参阅http://gaming.adobe.com/getstarted/。 

<rendermode>direct</rendermode> 

gpu 模式的限制为: 

flex 框架不支持 gpu 渲染模式。 

不支持滤镜 

不支持 pixelbender 混合和填充 

不支持以下混合模式:图层、alpha、擦除、叠加、强光、变亮和变暗 

不建议在播放视频的应用程序中使用 gpu 渲染模式。 

在 gpu 渲染模式中,当虚拟键盘打开时,不会正确地将文本字段移动到可见的位置。若要确保文本字段在用户输入文本时可见,请使用舞台和软键盘事件的 softkeyboardrect 属性将文本字段移到可见区域。 

如果显示对象无法通过 gpu 进行渲染,则根本不会显示。例如,如果将滤镜应用于显示对象,则不会显示该对象。 

注: 在 air 2.6 以上的版本中,ios 的 gpu 实现与在更早版本(air 2.0 版本)中使用的实现有很大的不同。适用不同的优化注意事项。 

您可以添加 supportedprofiles 元素,以指定您的应用程序支持哪些设备配置文件。针对移动设备使用 mobiledevice 配置文件。当使用 adobe debug launcher (adl) 运行应用程序时,adl 会将列表中的第一个配置文件用作活动配置文件。您也可以在运行 adl 时使用 -profile 标志,以在支持列表中选择特定的配置文件。如果您的应用程序在所有配置文件下运行,则可以完全忽略

supportedprofiles 元素。在这种情况下,adl 会将桌面配置文件用作默认的活动配置文件。 

若要指定应用程序同时支持移动设备和桌面配置文件,并且您通常要在移动设备配置文件中测试应用程序,请添加以下元素: 

<supportedprofiles>mobiledevice desktop</supportedprofiles> 

支持 mobiledevice 配置文件的应用程序可以使用本机扩展。 

在应用程序描述符中声明 air 应用程序使用的所有本机扩展。下面的例子说明了用于指定两个所需本机扩展的语法: 

<extensions> 

     <extensionid>com.example.extendedfeature</extensionid> 

    <extensionid>com.example.anotherfeature</extensionid> 

</extensions> 

extensionid 元素的值与扩展描述符文件中的 id 元素的值相同。扩展描述符文件是一个名为 extension.xml 的 xml 文件。已打包在从本机扩展开发人员处接收到的 ane 文件中。 

请将 softkeyboardbehavior 元素设置为 none,以便可以禁用自动平移和调整大小行为,运行时利用这些行为,可以确保在虚拟键盘出现后具有焦点的文本条目字段位于视图中。如果您禁用该自动行为,则在虚拟键盘出现后,确保文本条目区域或其他相关内容可见就是您的应用程序的职责。您可以使用舞台的 softkeyboardrect 属性,结合 softkeyboardevent

来检测何时键盘将打开以及确定键盘遮住的区域。 

若要启用该自动行为,请将该元素值设置为 pan: 

<softkeyboardbehavior>pan</softkeyboardbehavior> 

由于 pan 为默认值,省略 softkeyboardbehavior 元素也会启用自动键盘行为。 

注: 当您同时使用 gpu 呈现时,不支持平移行为。