展会信息港展会大全

Android之apk文件签名——keytool 和 jarsigner
来源:互联网   发布日期:2016-01-13 21:47:34   浏览:2272次  

导读:一、生成密钥库将位置定位在jdk的bin文件中,输入以下命名行:keytool -genkey -alias ChangeBackgroundWid get.keystore -keyalg RSA -validity 20000 -eystore ChangeBackgroundWidget.keystore上面......

一、生成密钥库

将位置定位在jdk的bin文件中,输入以下命名行:

keytool -genkey -alias ChangeBackgroundWid get.keystore -keyalg RSA -validity 20000 -eystore ChangeBackgroundWidget.keystore

上面的命令中间不换行,按下 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 密码相同,按回车):

图1

二、可以生成签名的apk文件

这里输入文件ChangeBackgroundWidget.apk,最终生成ChangeBackgroundWidget_signed.apk为Android签名后的APK执行文件

输入以下命令行:

jarsigner -verbose -keystore ChangeBackgroundWidget.keystore -signedjar ChangeBackgroundWidget_signed.apk ChangeBackgroundWidget.apk ChangeBackgroundWidget.keystore

上面的命令中间不换行,按 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.dex

图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

然后在运行上面的步骤即可。

赞助本站

人工智能实验室

相关热词: apk文件 签名

相关内容
AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港