公司的老项目,用了老技术:Adobe flex,SDK 3.4。IDE工具用Flash Builder4.6.前几天业务人员反映之前的*.air包无法安装,报错如下:
随即准备重新打包,之前程序员交接的在Flash Builder中打包的方法如下:
“项目”-->“导出发行版”-->浏览指定“导出到文件夹”,导出为“已签名的AIR包”-->“下一步”-->“数字签名”-->证书“创建”,来创建*.p12证书-->输入证书密码,勾选“时间戳”,点击“完成”
经网上查询,原因可参考:https://my.oschina.net/return/blog/1631031,考虑用adt命令打包,首先在系统“环境变量”添加adt所在的路径,否则会报“adt不是内部命令......”
接下来,开始一路采坑
D:\codes\flexCode\Air>adt -package -storetype pkcs12 -keystore mylock.p12 my-air.air Air-app.xml .
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
password:
D:\codes\flexCode\Air\Air-app.xml: error 301: Application descriptor missing/cannot be opened
上述报错是因为adt命令应该在Air-app.xml目录下运行
D:\codes\flexCode\Air>adt -package -storetype pkcs12 -keystore mylock.p12 dz-air.air /codes/flexCode/Air/bin-debug/Air-app.xml .
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
password:
D:\codes\flexCode\Air\bin-debug\Air-app.xml: error 102: Invalid namespace http://ns.adobe.com/air/application/2.0
102错误说的是Air-app.xml的问题,查看adt版本,修改Air-app.xml版本为1.5
Air-app.xml头部
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<application xmlns="http://ns.adobe.com/air/application/1.5">
dos窗口查看adt版本
D:\codes\flexCode\Air\bin-debug>adt -version
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
adt version "1.5.3.9120"
重新打包,语句中“-tsa http://...”是生成时间戳的,不可少。在dos命令当前所在的文件夹下可以看到成功生成myAir.air安装包
D:\codes\flexCode\Air\bin-debug>adt -package -storetype pkcs12 -keystore mylock.p12 -tsa http://tsa.starfieldtech.com myAir.air Air-app.xml .
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
password:
D:\codes\flexCode\Air\bin-debug>
将命令写成bat命令文件,可以参考:https://my.oschina.net/return/blog/1631031
上述打包命令里没有添加*.p12的密码,所以每次执行.bat文件还需要在dos窗口输入密码,可以对上述打包命令做如下修改
goto start
:start
D:
CD \codes\flexCode\Air\bin-debug
adt -package -storetype pkcs12 -keystore myLock.p12 -storepass 123456 -tsa http://tsa.starfieldtech.com myAir.air Air-app.xml .
exit
adt打包命令官方文档:https://help.adobe.com/en_US/air/build/WS901d38e593cd1bac1e63e3d128cdca935b-8000.html