Browsed by
月份:2014年1月

AIRSDK4.0之ADT打包IPA,速度快10倍

AIRSDK4.0之ADT打包IPA,速度快10倍

更新了最新的AIR SDK 4.0,加入参数-useLegacyAOT no 打包ipa,果然快了很多,官方说的是快10倍,貌似差不多!

 

[codesyntax lang=”actionscript3″]

@echo off
::
::   quickly package ipa
::    by nestor 2014.01.21
::
rem ------------------------
::change path(切换到当前目录下)
cd /d "%~dp0"
cd /d "%cd%\"
::cd /d ..

echo "%~dp0"

rem ------------ set adt variable(设置adt变量) ----------------------------
::key(证书)
set KEY_PATH="D:\keystore\wen\dev.p12"
set KEY_PASS=111111
set KEY_MOBILE_PROVISION="D:\keystore\wen\dev.mobileprovision"
::all files(所有文件路径设置)
set ROOT_PATH=

set FILE_SWF=%ROOT_PATH%sh.swf
set FILE_XML=%ROOT_PATH%sh-app.xml
set FILE_LOGO=%ROOT_PATH%bgLogo.png
set FILE_IPHONE4_DEFAULT=%ROOT_PATH%Default.png
set FILE_IPHONE5_DEFAULT=%ROOT_PATH%Default-568h@2x.png
set FILE_RES=%ROOT_PATH%res
::target ipa name(ipa包的名字)
set TARGET_NAME=sh%date:~5,2%%date:~8,2%.ipa

rem ------------package(打包)-----------------------------

echo begin:%time%
adt -package -target ipa-app-store -useLegacyAOT no -storetype pkcs12 -keystore %KEY_PATH% -storepass %KEY_PASS% -provisioning-profile %KEY_MOBILE_PROVISION% %TARGET_NAME% %FILE_XML% %FILE_SWF% %FILE_LOGO% %FILE_IPHONE4_DEFAULT% %FILE_IPHONE5_DEFAULT% %FILE_RES%
echo end:%time%
pause

[/codesyntax]

如果你用到了ane,别忘了加 -extdir . !

为什么注释写的也是英文呢?坑爹啊,批处理bat文件是ASNI编码格式,Fb里用的是UTF-8,本来像写中文的,结果要么编辑是中文乱码,要么运行时中文乱码,干脆拼几个英文单词算了!

 

 

后续:2014.03.06

这个功能目前还是测试版,打包demo或者小项目还是没问题的,但是打包公司的项目,各种bug,坐等adobe出正式版!

AIR p12转keystore证书签名apk

AIR p12转keystore证书签名apk

需求背景:向平台提交apk时提示该id已经存在,需要应用认领,可以认领的方式是使用java的keystore对平台提供的空白为签名apk进行签名上传验证,我们知道使用AIR开发的apk,所用的证书是p12的,如果进行签名认证呢?

猜想一:试图将p12证书直接转成keystore,各种找资料,耗时半天,没成功!(会遇到找不到证书链的问题)

猜想二:反编译了平台提供的未签名apk,获取id,版本等,通过Flash Builder创建一个类似的apk,企图骗过平台,结果被识破。

继续查找,终于在某篇文章的评论处找到解决办法了。

正确方法:将p12证书直接导入到一个keystore文件中,就可以正常签名了!(真TM的)

[codesyntax lang=”actionscript3″]

//讲p12导入至keystore
keytool -v -importkeystore -srckeystore temp.p12 -srcstoretype PKCS12 -destkeystore temp.keystore -deststoretype JKS
//查看keystore
keytool -v -list -keystore temp.keystore
签名(1-证书链别名)
jarsigner -verbose -keystore d:\key.keystore -signedjar d:\signed.apk d:\tap_unsign.apk 1
删除keystore中别名为help.com的证书链
keytool -delete -alias help.com -keystore key.keystore

[/codesyntax]

签名后上传平台果然OK了!

参考文章地址:http://www.shadowkong.com/archives/1359 这篇Rect的文章是介绍在adt命令里用keystore签名AIR生成的apk的方法,也很有用,建议还是通过keystore来进行签名,使AIR生成的apk更加接近java原生生成的!

以下是Rect大神关于AIR生成的apk以及ANE等的研究:https://github.com/recter/Anti-ADT/tree/master/RDT(都很实用!)