1、生成密钥库
将位置定位在jdk的bin文件中,输入如下命名行:java
keytool -genkey -alias ChangeBackgroundWid get.keystore -keyalg RSA -validity 20000 -eystore ChangeBackgroundWidget.keystoreandroid
上面的命令中间不换行,按下“Enter”键,并根据提示填写相关信息,详细信息以下及图1(validity为有效期,这里有效期为20000天):
输入keystore密码:
再次输入新密码:
您的名字与姓氏是什么?
[Unknown]: mythlink
您的组织单位名称是什么?
[Unknown]: www.mythlink.com
您的组织名称是什么?
[Unknown]: www.mythlink.com
您所在的城市或区域名称是什么?
[Unknown]: Shen Zhen
您所在的州或省份名称是什么?
[Unknown]: Guang Dong
该单位的两字母国家代码是什么
[Unknown]: CN
CN=mythlink, OU=www.mythlink.com, O=www.mythlink.com, L=Shen Zhen, ST=Guang Dong
, C=CN 正确吗?
[否]: Y
输入<ChangeBackgroundWidget.keystore>的主密码
(若是和 keystore 密码相同,按回车):spa
图1命令行
2、能够生成签名的apk文件debug
这里输入文件ChangeBackgroundWidget.apk,最终生成ChangeBackgroundWidget_signed.apk为Android签名后的APK执行文件
输入如下命令行:xml
jarsigner -verbose -keystore ChangeBackgroundWidget.keystore -signedjar ChangeBackgroundWidget_signed.apk ChangeBackgroundWidget.apk ChangeBackgroundWidget.keystoreblog
上面的命令中间不换行,按“Enter”键,根据提示输入密钥库的口令短语(即密码),详细信息以下及图2:
输入密钥库的口令短语:
正在添加: META-INF/MANIFEST.MF
正在添加: META-INF/CHANGEBA.SF
正在添加: META-INF/CHANGEBA.RSA
正在签名: res/drawable/icon.png
正在签名: res/drawable/icon_audio.png
正在签名: res/drawable/icon_exit.png
正在签名: res/drawable/icon_folder.png
正在签名: res/drawable/icon_home.png
正在签名: res/drawable/icon_img.png
正在签名: res/drawable/icon_left.png
正在签名: res/drawable/icon_mantou.png
正在签名: res/drawable/icon_other.png
正在签名: res/drawable/icon_pause.png
正在签名: res/drawable/icon_play.png
正在签名: res/drawable/icon_return.png
正在签名: res/drawable/icon_right.png
正在签名: res/drawable/icon_set.png
正在签名: res/drawable/icon_text.png
正在签名: res/drawable/icon_xin.png
正在签名: res/layout/fileitem.xml
正在签名: res/layout/filelist.xml
正在签名: res/layout/main.xml
正在签名: res/layout/widget.xml
正在签名: res/xml/widget_info.xml
正在签名: AndroidManifest.xml
正在签名: resources.arsc
正在签名: classes.dexip
图2资源
====================================================开发
在运行这种方式中,我碰到过几种不一样的问题:
问题一:jarsigner: 没法打开 jar 文件: ChangeBackgroundWidget.apk
个人解决方法是:将要进行签名的APK放到对应的文件下,如我把要签名的ChangeBackgroundWidget.apk放到JDK的bin文件里。
问题二:jarsigner: 没法对 jar 进行签名: java.util.zip.ZipException: invalid entry comp
ressed size (expected 1598 but got 1622 bytes)
这个问题,我还没解决,在网上搜了下,找到了一种方法,但我实践没彻底,因此不知道这个解决方法是否正确:
方法一:Android开发网提示这些问题主要是因为资源文件形成的,对于android开发来讲应该检查res文件夹中的文件,逐个排查。这个问题能够经过升级系统的JDK和JRE版原本解决。
方法二:这是由于默认给apk作了debug 签名,因此没法作新的签名这时就必须点工程右键->Android Tools ->Export Unsigned Application Package.
或者从AndroidManifest.xml的 Exporting上也是同样的
而后再基于这个导出的unsigned apk作签名,导出的时候最好将其目录选在你以前产生keystore的那个目录下,这样操做起来就方便了。
==========================================
MS我找到了第二个问题的解决方法了。。。
首先右击要签名APK对应的项目,选中“Android Tools”右扩展栏中的“Export Unsigned Application Package...”,,如图3
图3
在弹出的对话框中将这个未签名的apk储存在jdk的bin文件夹中,如图4:
图4
而后在运行上面的步骤便可。