公司的老項目,用了老技術: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