ANTkeystore制作 签名.docx
《ANTkeystore制作 签名.docx》由会员分享,可在线阅读,更多相关《ANTkeystore制作 签名.docx(24页珍藏版)》请在冰豆网上搜索。
ANTkeystore制作签名
ANT、keystore制作、签名
一、ANT学习:
一,准备ant
ant官网可下载
http:
//ant.apache.org/
ant环境配置:
1。
解压ant的包到本地目录。
2。
在环境变量中设置ANT_HOME,值为你的安装目录。
3。
把ANT_HOME/bin加到你系统环境的path。
二,详细步骤和说明,这里我们要知道一些Android命令。
前提条件已配置好androidsdk环境,所以可以在任意目录下执行android命令,不然则要切换到android-sdk\tools目录下
1.创建一个android项目
参数说明:
-k/--package为命名空间(包名)-a/--name工程名
-p/--path项目-t为目标平台的版本编号
例如:
C:
\DocumentsandSettings\Administrator>androidcreateproject-kcom.android.Tank-aTank-t4 -pF:
\tank
列出不同版本平台的对应id编号android.batlisttargets/androidlist
例如:
C:
\DocumentsandSettings\Administrator>android.batlisttargets
对已经存在的android工程,我们可以update下(修改平台的版本),这样会自动添加build.xml等ant的配置文件
例如:
D:
\Dev\android-sdk-windows\tools>androidupdateproject-nLHCLottery-t4-pF:
\LHCLottery
Updateddefault.properties
Updatedlocal.properties
AddedfileF:
\LHCLottery\build.xml
AddedfileF:
\LHCLottery\proguard.cfg
编译:
直接ant是不会有文件输出的,所以后面一定要带上参数
ant参数如下:
*debug:
带调试用签名的构建
*release:
构建应用程序,生成的apk必须签名才可以发布
*install:
安装调试构建的包到运行着的模拟器或者设备;
*reinstall
*uninstall
开始执行编译:
切换到工程目录下:
E:
\MyLiB\Android\AndroidAnt\MyBoardCastReciver
例如(生成调试版本):
E:
\MyLiB\Android\AndroidAnt\MyBoardCastReciver>ant debug
例如(生成未签名版本):
E:
\MyLiB\Android\AndroidAnt\MyBoardCastReciver>ant release
参考:
二、keystore制作
Apk签名首先要有一个keystore的签名用的文件。
keystore是由jdk自带的工具keytool生成的。
具体生成方式参考:
开始->运行->cmd->cd到你安装的jdk的目录里,我的是C:
\ProgramFiles\Java\jdk1.6.0_10\bin
然后输入:
keytool-genkey-aliasasaiAndroid.keystore-keyalgRSA-validity20000-keystoreasaiAndroid.keystore
-alias后面跟的是别名这里是asaiAndroid.store
-keyalg是加密方式这里是RSA
-validity是有效期这里是20000
-keystore就是要生成的keystore的名称这里是asiAndroid.keystore
/*说明:
-genkey产生密钥
-aliasdemo.keystore别名demo.keystore
-keyalgRSA使用RSA算法对签名加密
-validity40000有效期限4000天
-keystoredemo.keystore*/
然后按回车键
按回车后首先会提示你输入的密码:
这个在签名时要用的,要记住
然后会再确认你的密码。
之后会依次叫你输入姓名、组织单位、组织名称、城市区域、省份名称、国家代码(CN)等。
参考:
三、开始签名。
在C:
\ProgramFiles\Java\jdk1.6.0_10\bin还提供一个工具jarsigner.exe
运行命令给APK签名:
jarsigner-verbose-keystoreasaiAndroid.keystore-signedjarLotteryonline_signed.apkLotteryOnline.apkasaiAndroid.keystore
-keystore:
keystore的名称
LotteryOnline_signed.apk:
签名后的APK
LotteryOnline.apk:
签名前的APK
/*说明:
-verbose输出签名的详细信息
-keystore demo.keystore密钥库位置
-signedjardemor_signed.apkdemo.apkdemo.keystore正式签名,三个参数中依次为签名后产生的文件demo_signed,要签名的文件demo.apk和密钥库demo.keystore.*/
然后按回车:
会要求输入刚才设置的密码,输入后按回车就开始签名了。
参考:
打包的主要步骤:
1生成R.java类文件:
利用ant和命令行使用androidSDK提供的aapt.ext程序生成R.java。
2将.aidl文件生成.java类文件:
利用ant和命令行使用androidSDK提供的aidl.exe生成.java文件。
3第三步编译.java类文件生成class文件:
利用ant和命令行使用jdk的javac编译java类文件生成class文件。
4第四步将class文件打包生成classes.dex文件:
利用ant命令行使用androidSDK提供的dx.bat命令行脚本生成classes.dex文件。
5第五步打包资源文件(包括res、assets、androidmanifest.xml等):
ant命令行使用AndroidSDK提供的aapt.exe生成资源包文件。
6第六步生成未签名的apk安装文件:
ant和命令行使用androidSDK提供的apkbuilder.bat命令脚本生成未签名的apk安装文件。
7第七步对未签名的apk进行签名生成签名后的android文件:
ant和命令行使用jdk的jarsigner对未签名的包进行apk签名。
8第八步安装和卸载APK文件,利用ant命令行使用AndroidSDK提供的adb.exe。
参考:
使用ant优化android项目编译速度提高工作效率
在通常的Android大中型项目开发中,使用Eclipse进行android项目的开发有如下不便之处:
1、Android项目编译周期长,编译项目命令取消困难
2、在进行Android项目的编译的同时,Eclipse锁定工作区不能进行修改操作
3、在只进行资源文件的修改时,Eclipse对资源文件的修改会导致整个项目的编译,在无法打开自动编译模式下,极为不便
对项目进行分包处理后,android编译速度极慢。
对于我们现在的项目,在未进行分包时编译一次大约需要4、5分钟而有时候你只是简单的修改了一下java文件。
。
。
进行分包后,编译整个项目时长达到10分以上,有时甚至造成eclipse假死
严重的损耗了工作时间和降低工作效率。
对于一个android项目而言,其编译流程大致如下
针对现在生成项目速度慢的状况,发现android项目编译时对资源文件的操作占大量时间。
Eclipse默认编译流程会有两次aapt调用。
每次时间约四分钟。
针对我们进行android项目开发时的经验,有以下几种情况:
1、频繁更改资源文件,在类中需要引用资源但不用生成apk
2、频繁修改java类文件,资源文件不变,需要生成apk
3、次数很少的同时修改资源文件和java类文件,同时生成apk
使用antbuild脚本实现将二次资源文件的操作分开,可以良好改善编译速度,提高工作效率(至少一半)。
在ant脚本编译模式下,对于以上三种情况:
1、在只有资源文件更改的情况:
使用命令antgenerateR只更新R文件耗时约4mins
2、在没有更新资源文件后,只修改JAVA类,使用antsimpledebug忽略资源文件R引用的更新,并打包耗时约5mins
3、更新了资源文件,又修改了JAVA文件想立即打包则使用antdebug此为Eclipse默认模式,时长大约10minus-_-|
详细参考:
ANT学习、keystore制作,APK签名
(二)
今天研究了下build.xml,简单总结下。
收获:
1、修改build.properties文件,例如:
# 'source.dir'forthelocationofyourjavasourcefolderand
# 'out.dir'forthelocationofyouroutputfolder.
#Youcanalsouseitdefinehowthereleasebuildsaresignedbydeclaring
#thefollowingproperties:
# 'key.store'forthelocationofyourkeystoreand
# 'key.alias'forthenameofthekeytouse.
#Thepasswordwillbeaskedduringthebuildwhenyouusethe'release'target.
#sdk路径,签名路径,密码等
key.store=F:
/android123.keystore
key.alias=android123
key.store.password=850310
key.alias.password=850310
然后运行命令:
antrelease
直接生成签名的安装包。
2、发现一个奇怪问题
用keytool制作keystore,然后配置上面说到的文件,发现总是报错:
找不到证书链。
然而用signjar签名去签名,貌似又没问题,不知道为什么。
用eclipse制作的key,然后配置上面说到的文件,又没问题。
注意一点:
keytool制作的key文件都有后缀(.keystore);eclipse制作的key文件没有
意外收获:
[setup]WARNING:
NominSdkVersionvalueset.Applicationwillinstallonall Androidversions.
为什么我的jdk1.6安装完之后不用配置环境变量就可以在dos下运行java命
----用jdk的安装向导安装的时候,会自动把java.exe等几个文件复制到windows目录下,windows目录本来就是在path里的
AndroidAnt
xmlversion="1.0"encoding="UTF-8"?
>
--环境变量-->
--应用的名称-->
--应用的包目录-->
--SDK目录(获取操作系统环境变量ANDROID_SDK_HOME的值)-->
--SDK中tools目录-->
--SDK指定平台目录-->
--SDK指定平台的tools目录-->
--使用到得命令-->
--生成R文件的相对目录-->
--编译后的文件放置目录-->
--生成class目录-->
--资源文件目录-->
--配置清单文件-->
--编译时需要的jar,如果项目需要使用到地图服务则需要maps.jar-->
--编译aidl文件所需的预处理框架文件framework.aidl-->
--Java源文件目录-->
--外部类库所在目录-->
--proguard所在目录-->
--classes.dex相关变量-->
--经过aapt生成的资源包文件-->
--未签名apk包-->
--证书文件-->
--已签名apk包-->
--优化后apk包-->
${appName}
${appPackage}
${sdk-folder}
${sdk-tools}
${sdk-platform-folder}
${sdk-platform-tools}
${aapt}
${aidl}
${dx}
${apkbuilder}
${jarsigner}
${zipalign}
${adb}
${outdir-gen}
${outdir-bin}
${outdir-classes}
${outdir-classes-ospath}
${resource-dir}
${assets-dir}
${android-manifest-xml}
${android-jar}
${android-maps-jar}
${framework-aidl}
${srcdir}
${srcdir-ospath}
${external-lib}
${external-lib-ospath}