在线笔记
全部博文(596)
分类: Android平台
2014-10-25 21:39:04
http://blog.163.com/squall_smile/blog/static/6034984020113169415502/
在使用android模拟器时,apk文件自动上传并安装执行。但是编译为apk文件自己上传到手机上却运行不了,这是因为apk文件没有签名的缘故。在Eclipse自动在模拟器中上传程序时,ADT已为其加上了某个调试用的签名,所以不会有问题。
签名到底有何用处呢?简要说两点:1 签名可使你获得某种特殊权限。2 保护你程序的安全。若某人“碰巧”使用了与你相同的包名,那么由于签名不同,它将无法覆盖你的程序。而你使用了相同签名的程序则可任意升级。
可用android sdk里的keytools来创建和执行签名。当然用Eclipse更方便。
选择Export选项,选择新建签名,选择路径并填写一些信息,然后会生成你命名的签名文件,选择你要签名导出的apk文件名称,将会将其签名保存。
此时将此apk文件传至手机上,会正常安装成功。
下次可选择已经创建好的签名,再次为导出的apk文件签名。注意记住密码。
android sdk提供的命令行方式创建签名及签名方法如下:
方法一: 命令行下对apk签名(原理)
创建key,需要用到keytool.exe (位于jdk1.6.0_24\jre\bin目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于jdk1.6.0_24\bin目录下),把上两个软件所在的目录添加到环境变量path后,打开cmd输入
D:\>keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
/*说明:-genkey 产生密钥
-alias demo.keystore 别名 demo.keystore
-keyalg RSA 使用RSA算法对签名加密
-validity 40000 有效期限4000天
-keystore demo.keystore */
D:\>jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore
/*说明:-verbose 输出签名的详细信息
-keystore demo.keystore 密钥库位置
-signedjar demor_signed.apk demo.apk demo.keystore 正式签名,三个参数中依次为签名后产生的文件demo_signed,要签名的文件demo.apk和密钥库demo.keystore.*/
注意事项:android工程的bin目录下的demo.apk默认是已经使用debug用户签名的,所以不能使用上述步骤对此文件再次签名。正确步骤应该是:在工程点击右键->Anroid Tools-Export Unsigned Application Package导出的apk采用上述步骤签名