air adt

http://help.adobe.com/zh_CN/AIR/1.5/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7fd6.html

使用 AIR Developer Tool (ADT) 可以为基于 SWF 和基于 HTML 的 AIR 应用程序创建 AIR 安装文件。(如果您使用适用于 Dreamweaver® 的 Adobe® AIR® 扩展创建应用程序,则还可以使用“AIR 应用程序和安装程序设置”对话框中的“创建 AIR 文件”命令生成 AIR 包。请参阅使用 AIR Extension for Dreamweaver。)

ADT 是一个可从命令行运行的 Java 程序,也可以是一个生成工具(例如 Ant)。SDK 包含为您执行 Java 程序的命令行脚本。有关配置系统以运行 ADT 工具的信息,请参阅安装 HTML 开发工具

打包 AIR 安装文件

每个 AIR 应用程序必须至少包含一个应用程序描述符文件和主 SWF 或 HTML 文件。安装的任何其他应用程序资源必须打包在 AIR 文件中。

必须使用数字证书对所有 AIR 安装程序文件签名。AIR 安装程序使用该签名验证应用程序文件自签名之后是否未发生任何更改。可以使用证书颁发机构颁发的代码签名证书,也可以使用自签名证书。由受信任证书颁发机构颁发的证书向应用程序用户提供一定的发行商身份保证。自签名证书无法用于验证发行商身份。此缺点还会削弱未对包进行更改的保证,因为合法安装文件在到达用户之前可能会被伪造安装文件取代)。

使用 ADT -package 命令,一步即可对 AIR 文件进行打包和签名。还可以使用 -prepare 命令创建未签名的中间包,然后在另一步中使用 -sign 命令对中间包签名。

当对安装包签名时,ADT 将自动连接时间戳签发机构服务器以验证时间。时间戳信息包含在 AIR 文件中。您可以在将来任一时间安装包含已经过验证的时间戳的 AIR 文件。如果 ADT 无法连接到时间戳服务器,则取消打包。您可以覆盖时间戳设置选项,但是如果没有时间戳,在对安装文件签名所使用的证书过期后,AIR 应用程序将停止安装。

如果要创建一个包以便更新现有 AIR 应用程序,则必须使用与原始应用程序相同的证书或具有相同标识的证书对此包进行签名。若要具有相同标识,两个证书必须具有相同的识别名称(所有信息字段均匹配),并且根证书必须具有相同的证书链。因此,只要未更改任何标识信息,则可以使用通过证书颁发机构续订的证书。

从 AIR 1.1 起,可以使用 -migrate 命令迁移应用程序,使其使用新证书。迁移证书需要使用新证书和旧证书对 AIR 文件进行签名。通过证书迁移,您可以将自签名证书更改为商用代码签名证书,或者将自签名证书或商用证书更改为其他自签名证书或商用证书。当迁移证书时,现有用户无需在安装现有应用程序的新版本之前卸载该应用程序。默认情况下,迁移签名带有时间戳。

注: 应用程序描述符文件中的设置确定 AIR 应用程序的标识及其默认安装路径。请参阅 应用程序描述符文件结构
在一个步骤中对 AIR 文件进行打包和签名
 在一个命令行中使用以下语法的  -package 命令:
adt -package SIGNING_OPTIONS air_file app_xml [file_or_dir | -C dir file_or_dir | -e file dir ...] ...

SIGNING_OPTIONS 该签名选项标识用于对 AIR 文件签名的私钥和证书所在的 keystore。若要使用 ADT 生成的自签名证书对 AIR 应用程序签名,使用的选项包括:

-storetype pkcs12 -keystore certificate.p12

在本例中,certificate.p12 为 keystore 的文件名。(由于未在命令行中提供密码,因此 ADT 提示您提供密码。)ADT 命令行签名选项详细介绍了签名选项。

air_file 创建的 AIR 文件的名称。

app_xml 指向应用程序描述符文件的路径。指定的路径可以是相对于当前目录的相对路径,也可以是绝对路径。(应用程序描述符文件在 AIR 文件中重命名为“application.xml”。)

file_or_dir 要在 AIR 文件中打包的文件和目录。可以指定任意数目的文件和目录,这些文件和目录以空格分隔。如果列出目录,则将该目录中的所有文件和子目录添加到该包中,但隐藏文件除外。(此外,如果指定应用程序描述符文件,则无论该文件是直接指定还是使用通配符或目录扩展指定的,都将忽略该文件,并且不会将其再次添加到包中。)指定的文件和目录必须位于当前目录或其子目录之一。使用 -C 选项更改当前目录。

重要说明: 在  file_or_dir 参数中,不能在 – C 选项后使用通配符。(命令解释程序先展开通配符,然后再将该参数传递到 ADT,这将导致 ADT 在错误位置中查找文件。)但是,您仍可以使用点字符“.”表示当前目录。例如,“ -C assets . ”将资源目录中包括任何子目录在内的所有内容都复制到应用程序包的根级别。

-C dir 将工作目录更改为 dir 的值,然后处理添加到应用程序包的后续文件和目录。将文件和目录添加到应用程序包的根目录中。–C 选项可以使用任意次,以便包含文件系统多个点的文件。如果为 dir 指定相对路径,该路径则始终从原始工作目录解析。

由于 ADT 处理包包含的文件和目录,因此将存储当前目录和目标文件之间的相对路径。安装包时,这些路径将展开为应用程序目录结构。因此,指定 -C release/bin lib/feature.swf 会将 release/bin/lib/feature.swf 文件放置在根应用程序文件夹的 lib 子目录中。

-e file dir 将指定文件放置到指定包目录中。

注: 应用程序描述符文件的  <content> 元素必须指定主应用程序文件在应用程序包目录树中的最终位置。
ADT 示例

打包当前目录中的特定应用程序文件:

adt –package -storetype pkcs12 -keystore cert.p12 myApp.air myApp.xml myApp.html AIRAliases.js image.gif

打包当前工作目录中的所有文件和子目录:

adt –package -storetype pkcs12 -keystore ../cert.p12 myApp.air myApp.xml .
注: keystore 文件包含用于对应用程序签名的私钥。切勿在 AIR 包中包含签名证书!如果在 ADT 命令中使用通配符,请将 keystore 文件放置到其他不同位置,使其不包含在包中。在本例中,keystore 文件 cert.p12 驻留在父目录中。

仅打包主文件和 images 子目录:

adt –package -storetype pkcs12 -keystore cert.p12 myApp.air myApp.xml myApp.html AIRAliases.js images

打包基于 HTML 的应用程序和 HTML、scripts 和 images 子目录中的所有文件:

adt –package -storetype pkcs12 -keystore cert.p12 myApp.air myApp.xml index.html AIRALiases.js html scripts images

打包位于工作目录 (src) 中的 application.xml 文件和主 HTML 文件:

adt –package -storetype pkcs12 -keystore cert.p12 myApp.air src/myApp.xml –C src myApp.html 

对生成文件系统的多个位置的资源打包。在本例中,应用程序资源在打包前位于以下文件夹:

/devRoot 
    /myApp 
        /release 
            /bin 
                myApp.xml 
                myApp.html 
    /artwork 
        /myApp 
            /images 
                image-1.png 
                ... 
                image-n.png 
    /libraries 
        /release 
            /libs 
                lib-1.js 
                ... 
                lib-n.js 
                AIRAliases.js

从 /devRoot/myApp 目录运行以下 ADT 命令:

adt –package -storetype pkcs12 -keystore cert.p12 myApp.air release/bin/myApp.xml  
    –C release/bin myApp.swf 
    –C release/bin myApp.html  
    –C ../artwork/myApp images  
    –C ../libraries/release libs

生成以下包结构:

/myAppRoot 
    /META-INF 
        /AIR 
            application.xml 
            hash 
    myApp.swf 
    mimetype 
    /images 
        image-1.png 
        ... 
        image-n.png 
    /libs 
        lib-1.swf 
        ... 
        lib-n.swf 
        AIRAliases.js
/myAppRoot 
    /META-INF 
        /AIR 
            application.xml 
            hash 
    myApp.html 
    mimetype 
    /images 
        image-1.png 
        ... 
        image-n.png 
    /libs 
        lib-1.js 
        ... 
        lib-n.js 
        AIRAliases.js

作为 Java 程序运行 ADT(未设置类路径):

java –jar {AIRSDK}/lib/ADT.jar –package -storetype pkcs12 -keystore cert.p12 myApp.air myApp.xml myApp.swf 
java –jar {AIRSDK}/lib/ADT.jar –package -storetype pkcs12 -keystore cert.p12 myApp.air myApp.xml myApp.html AIRAliases.js

作为 Java 程序运行 ADT(将 Java 类路径设置为包含 ADT.jar 包):

java com.adobe.air.ADT –package -storetype pkcs12 -keystore cert.p12 myApp.air myApp.xml myApp.swf 
java com.adobe.air.ADT –package -storetype pkcs12 -keystore cert.p12 myApp.air myApp.xml myApp.html AIRAliases.js

ADT 错误消息

下表列出了 ADT 程序可能报告的错误以及可能的原因:

应用程序描述符验证错误

错误代码

说明

备注

100

无法分析应用程序描述符

检查应用程序描述符文件中是否有标签未封闭等 XML 语法错误。

101

缺少命名空间

添加缺少的命名空间。

102

命名空间无效

检查命名空间拼写。

103

意外的元素或属性

删除引起错误的元素和属性。描述符文件中不允许使用自定义值。

检查元素和属性名称的拼写。

确保将元素放置在正确的父元素内,且使用属性时对应着正确的元素。

104

缺少元素或属性

添加所需的元素或属性。

105

元素或属性所含的某个值无效

纠正引起错误的值。

106

窗口属性组合非法

如 transparency = true 和 systemChrome = standard 等某些窗口设置不能在一起使用。更改其中某个不兼容的设置。

107

窗口最小大小大于窗口最大大小

更改最小大小或最大大小设置。

有关命名空间、元素、属性及其有效值的信息,请参阅设置 AIR 应用程序属性

应用程序图标错误

错误代码

说明

备注

200

无法打开图标文件

检查指定路径是否存在该文件。

使用另一个应用程序确保可以打开该文件。

201

图标大小错误

图标大小(以像素为单位)必须与 XML 标签相匹配。例如,假设有应用程序描述符元素:

<image32x32>icon.png</image32x32>

icon.png 中的图像必须刚好为 32x32 像素。

202

图标文件包含的某种图像格式不受支持

仅支持 PNG 格式。将应用程序打包之前转换其他格式的图像。

应用程序文件错误

错误代码

说明

备注

300

缺少文件,或无法打开文件

找不到或无法打开命令行中指定的文件。

301

缺少或无法打开应用程序描述符文件

在指定路径找不到应用程序描述符文件,或无法打开该文件。

302

包中缺少根内容文件

必须向包添加应用程序描述符的 <content> 元素中引用的 SWF 或 HTML 文件(通过将该文件加入 ADT 命令行中列出的文件中)。

303

包中缺少图标文件

必须向包添加应用程序描述符中指定的图标文件,方法是将这些图标加入到 ADT 命令行中列出的文件中。不会自动添加图标文件。

304

初始窗口内容无效

无法将应用程序描述符的 <content> 元素中引用的文件识别为有效的 HTML 或 SWF 文件。

305

初始窗口内容的 SWF 版本超出命名空间的版本

描述符命名空间中指定的 AIR 版本不支持应用程序描述符的 <content> 元素中所引用文件的 SWF 版本。例如,尝试将 SWF10 (Flash Player 10) 文件作为 AIR 1.1 应用程序的初始内容进行打包就会产生这种错误。

其他错误的退出代码

退出代码

说明

备注

2

用法错误

检查命令行参数中是否有错

5

未知错误

此错误表示所发生的情况无法按常见的错误条件作出解释。可能的根源包括 ADT 与 Java 运行时环境之间不兼容、ADT 或 JRE 安装损坏以及 ADT 内有编程错误。

6

无法写入输出目录

确保指定的(或隐含的)输出目录可访问,并且所在驱动器有足够的磁盘空间。

7

无法访问证书

确保正确指定了密钥存储库的路径。

检查能否访问密钥存储库中的证书。可以使用 Java 1.6 Keytool 实用程序帮助排除证书访问权限方面的问题。

8

证书无效

证书文件格式错误、被修改、已到期或被撤消。

9

无法为 AIR 文件签名

验证传递给 ADT 的签名选项。

10

无法创建时间戳

ADT 无法与时间戳服务器建立连接。如果通过代理服务器连接到 Internet,则可能需要配置 JRE 的代理服务器设置。

11

创建证书时出错

验证用于创建签名的命令行参数。

12

输入无效

验证命令行中传递给 ADT 的文件路径和其他参数。

ADT 命令行签名选项

ADT 使用 Java 加密体系结构 (JCA) 访问对 AIR 应用程序签名所使用的私钥和证书。签名选项标识 keystore 以及该 keystore 中的私钥和证书。

keystore 必须包含私钥和关联的证书链。证书链用于建立应用程序的发行商 ID。如果签名证书链接到某计算机上的受信任证书,则在“AIR 安装”对话框中显示该证书的公共名称作为发行商名称。

ADT 要求证书符合 x509v3 标准 (http://tools.ietf.org/html/rfc3280),并在扩展密钥用法扩展中包含代码签名的相应值。应遵循证书中的约束,并避免使用某些证书对 AIR 应用程序签名。

注: ADT 根据需要使用 Java 运行时环境代理设置连接 Internet 资源,以便检查证书吊销列表和获取时间戳。如果在使用 ADT 连接 Internet 资源时遇到问题,并且网络需要特定的代理设置,则可能需要配置 JRE 代理设置。
指定 AIR 签名选项
 若要为  -package 和  -prepare 命令指定 ADT 签名选项,请使用以下语法:
[-alias aliasName] [-storetype type] [-keystore path] [-storepass password1] [-keypass password2] [-providerName className] [-tsa url]

-alias aliasName — keystore 中的密钥的别名。当 keystore 仅包含一个证书时,则不必指定别名。如果未指定任何别名,ADT 则使用 keystore 中的第一个密钥。

并非所有 keystore 管理应用程序都允许向证书分配别名。例如,当使用 Windows 系统 keystore 时,则使用证书的识别名称作为别名。使用 Java Keytool 实用程序可以列出可用证书以便确定别名。例如,运行以下命令:

keytool -list -storetype Windows-MY

将为证书生成如下输出:

CN=TestingCert,OU=QE,O=Adobe,C=US, PrivateKeyEntry, 
Certificate fingerprint (MD5): 73:D5:21:E9:8A:28:0A:AB:FD:1D:11:EA:BB:A7:55:88

若要在 ADT 命令行中引用此证书,请将别名设置为:

CN=TestingCert,OU=QE,O=Adobe,C=US

在 Mac OS X 中,Keychain 中的证书别名与在 Keychain Access 应用程序中显示的名称相同。

-storetype type — keystore 类型,由 keystore 实现确定。大多数 Java 安装随附的默认 keystore 实现支持 JKS 和 PKCS12 类型。Java 5.0 包含对 PKCS11 类型和Keychain 类型的支持,前者用于访问硬件标记中的 keystore,后者用于访问 Mac OS X keychain。Java 6.0 包含对 MSCAPI 类型的支持(在 Windows 中)。如果安装和配置了其他 JCA 提供程序,则可能还可以使用其他 keystore 类型。如果未指定任何 keystore 类型,则使用默认 JCA 提供程序的默认类型。

存储类型

Keystore 格式

最低 Java 版本

JKS

Java keystore 文件 (.keystore)

1.2

PKCS12

PKCS12 文件(.p12 或 .pfx)

1.4

PKCS11

硬件标记

1.5

KeychainStore

Mac OS X Keychain

1.5

Windows-MY 或 Windows-ROOT

MSCAPI

1.6

-keystore path — 基于文件的存储类型的 keystore 文件路径。

-storepass password1 — 访问 keystore 所需的密码。如果未指定,ADT 则提示提供密码。

-keypass password2 — 访问用于对 AIR 应用程序签名的私钥所需的密码。如果未指定,ADT 则提示提供密码。

-providerName className — 指定 keystore 类型的 JCA 提供程序。如果未指定,ADT 则使用该 keystore 类型的默认提供程序。

-tsa url — 指定符合 RFC3161 的时间戳服务器的 URL,以便对数字签名进行时间戳设置。如果未指定任何 URL,则使用 Geotrust 提供的默认时间戳服务器。对 AIR 应用程序签名设置时间戳时,仍可以在签名证书过期之后安装该应用程序,这是因为时间戳验证该证书在签名时是否有效。

如果 ADT 无法连接到时间戳服务器,则取消签名,并且不会生成任何包。指定 -tsa none 可以禁用时间戳。但是,对于打包的没有时间戳的 AIR 应用程序,该应用程序将在签名证书过期后停止安装。

注: 签名选项类似于 Java Keytool 实用程序的等效选项。您可以使用 Keytool 实用程序在 Windows 中检查和管理 keystore。也可以在 Mac OS X 上使用 Apple® 安全实用程序实现此目的。
签名选项示例

使用 .p12 文件签名:

-storetype pkcs12 -keystore cert.p12

使用默认 Java keystore 签名:

-alias AIRcert -storetype jks

使用特定 Java keystore 签名:

-alias AIRcert -storetype jks -keystore certStore.keystore

使用 Mac OS X keychain 签名:

-alias AIRcert -storetype KeychainStore -providerName Apple

使用 Windows 系统 keystore 签名:

-alias cn=AIRCert -storeype Windows-MY

使用硬件标签签名(请参考标记制造商提供的 Java 配置相关说明,以便使用该标记并获取正确的 providerName 值):

-alias AIRCert -storetype pkcs11 -providerName tokenProviderName

在不嵌入时间戳的情况下签名:

-storetype pkcs12 -keystore cert.p12 -tsa none

使用 ADT 创建未签名的 AIR 中间文件

使用 -prepare 命令可创建未签名的 AIR 中间文件。必须使用 ADT -sign 命令对 AIR 中间文件签名,才能生成有效的 AIR 安装文件。

-prepare 命令采用的标签和参数与 -package 命令相同(但签名选项除外)。唯一区别在于前者的输出文件未签名。生成的中间文件的文件扩展名为:airi

若要对 AIR 中间文件签名,请使用 ADT -sign 命令。(请参阅使用 ADT 对 AIR 中间文件进行签名。)

ADT 示例
adt –prepare unsignedMyApp.airi myApp.xml myApp.swf components.swc 
 
adt –prepare unsignedMyApp.airi myApp.xml myApp.html AIRAliases.js image.gif

使用 ADT 对 AIR 中间文件进行签名

若要用 ADT 对 AIR 中间文件签名,请使用 -sign 命令。sign 命令仅对 AIR 中间文件(扩展名为 airi)起作用。不能对 AIR 文件进行两次签名。

若要创建 AIR 中间文件,请使用 adt -prepare 命令。(请参阅使用 ADT 创建未签名的 AIR 中间文件。)

对 AIRI 文件签名
 采用以下语法使用 ADT - sign 命令:
adt -sign SIGNING_OPTIONSairi_fileair_file

SIGNING_OPTIONS 该签名选项标识用于对 AIR 文件签名的私钥和证书。ADT 命令行签名选项介绍了这些选项。

airi_file 要进行签名的未签名 AIR 中间文件的路径。

air_file 要创建的 AIR 文件的名称。

ADT 示例
adt –sign -storetype pkcs12 -keystore cert.p12 unsignedMyApp.airi myApp.air

有关详细信息,请参阅对 AIR 文件进行数字签名


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值