最近编程时遇到问题:写了一个android小程序,打包后用apktool反编译再打包都没问题,安装时出现Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]错误,网上查资料原来是签名的问题,解决方案如下。

 

《一》使用命令行生成签名文件 

(1)创建一个用来存放签名文件的文件夹Android_keystore
(2)在命令行窗口中输入命令:(粗体部分)

[java] view plaincopy
  1. D:\Android_keystore>keytool -genkey -alias aeo_android.keystore -keyalg RSA -val
  2. idity 20000 -keystore aeo_android.keystore
[java] view plaincopy
  1. 输入密钥库口令:
  2. 再次输入新口令:
  3. 您的名字与姓氏是什么?
  4. [Unknown]:  localhost
  5. 您的组织单位名称是什么?
  6. [Unknown]:  btbu
  7. 您的组织名称是什么?
  8. [Unknown]:  btbu
  9. 您所在的城市或区域名称是什么?
  10. [Unknown]:  beijing
  11. 您所在的省/市/自治区名称是什么?
  12. [Unknown]:  beijing
  13. 该单位的双字母国家/地区代码是什么?
  14. [Unknown]:  cn
  15. CN=XiaoFeng, OU=btbu, O=btbu, L=beijing, ST=beijing, C=cn是否正确?
  16. [否]:  y

输入 <aeo_android.keystore> 的密钥口令

(如果和密钥库口令相同, 按回车):

这时会在D盘的Android_keystore文件夹下生成aeo_android.keystore文件,就是我们需要的签名文件,(-validity 20000 表示证书的有效天数为20000天)

《二》用生成的签名文件对apk文件进行签名 
(1)在Eclipse中用“Export the unsigned apk”工具导出项目,这里保存到D盘的Android_keystore文件夹下,名为testbim.apk

(2)使用jarsigner给 testbim.apk 文件签名,如下所示:

[java] view plaincopy
  1. D:\Android_keystore>"C:\Program Files\Java\jdk1.6.0_30\bin\jarsigner.exe" -verbo
  2. se -keystore aeo_android.keystore -signedjar testbim_signed.apk testbim.apk aeo_
  3. android.keystore
  4. 输入密钥库的口令短语:
  5. 正在添加: META-INF/MANIFEST.MF
  6. 正在添加: META-INF/AEO_ANDR.SF
  7. 正在添加: META-INF/AEO_ANDR.RSA
  8. 正在签名: res/drawable-hdpi/ic_action_search.png
  9. 正在签名: res/drawable-hdpi/ic_launcher.png
  10. 正在签名: res/drawable-ldpi/ic_launcher.png
  11. 正在签名: res/drawable-mdpi/ic_action_search.png
  12. 正在签名: res/drawable-mdpi/ic_launcher.png
  13. 正在签名: res/drawable-xhdpi/ic_action_search.png
  14. 正在签名: res/drawable-xhdpi/ic_launcher.png
  15. 正在签名: res/layout/activity_main.xml
  16. 正在签名: res/layout/two.xml
  17. 正在签名: res/menu/activity_main.xml
  18. 正在签名: AndroidManifest.xml
  19. 正在签名: classes.dex
  20. 正在签名: resources.arsc

keytool 是个密钥和证书管理工具。jarsigner 工具利用密钥仓库中的信息来产生或校验 Java 存档 (JAR) 文件的数字签名 (JAR 文件将类文件、图象、声音和/或其它数字化数据打包在一个文件中)。

这两个工具都是JDK自带的,所以你当前需要先确保JDK安装正确。并且环境变量设置正确,以便可以以命令行的方式进行处理。

输入密匙的口令短语: 
...... 
通过上面的命令就可以讲未签名的testbim.apk 文件签名为

[java] view plaincopy
  1. testbim_signed.apk

(3)最后验证是否签名成功 
Android_keystore>"C:\Program Files\Java\jdk1.6.0_30\bin\jarsigner.exe" -verify testbim_signed.apk
如果成功则 
输出:

jar 已验证

( 4 )安装到虚拟机上

搞定~

命令参数说明:

-genkey    产生证书文件 
-keystore  指定密钥库的.keystore文件中

-keyalg     指定密钥的算法

-validity    为证书有效天数,这里我们写的是20000天。 
-alias       产生别名

在输入密码时没有回显,只管输入就可以了,一般位数建议使用20位,切忌需要记下来后面还要用,

注意:

1、CN(Common Name - 名字与姓氏):其实这个“名字与姓氏”应该是域名,比如说localhost或是blog.devep.net之类的。输成了姓名,和真正运行的时候域名不符,会出问题。浏览器访问时,弹出一个对话框,提示“安全证书上的名称无效,或者与站点名称不匹配”,用户选择继续还是可以浏览网页。但是用http client写程序访问的时候,会抛出类似于“javax.servlet.ServletException: HTTPS hostname wrong: should be ”的异常。

2、在用keytool生成数字证书时必须保证:-keystore androidapp.keystore -alias androidapp.keystore 两者名称必须相同。否则下一步签名时会出现错误:jarsigner: 找不到 androidapp.keystore 的证书链。androidapp.keystore 必须引用包含专用密钥和相应的公共密钥证书链的有效密钥库密钥条目。

转载于:https://www.cnblogs.com/greywolf/archive/2013/04/22/3035178.html

(转) Android生成签名文件并用其对apk文件进行签名相关推荐

  1. Android在线生成证书并打包成apk文件

    安卓开发,离不开打包apk,调试发布都需要的,现在我们来了解学习: 参考:https://www.jianshu.com/p/7ca9b37ec1d5 一.生成安卓证书 Eclipse的签名文件是以. ...

  2. Android 生成签名文件、配置签名信息、打包

    AndroidStudio生成签名文件.配置签名信息.打包 开发完一款Application之后,需要对其进行打包,才可以发布工用户使用(release).而Android Studio就具备了打包的 ...

  3. android 生成带有系统权限的apk

    如果你需要开发一个带有系统权限的app 首先需要配置sharedUserId     如图 如果现在直接运行程序 是安装不上的  需要先把程序打包  然后把需要的文件跟打包好的app放在同一个文件夹下 ...

  4. Android(三)——将程序打包成APK文件,进行APK签名以及反编译APK

    文章目录 1. 签名的作用 2. Android Studio 如何打包签名 3. 反编译 APK 3.1 获取图片资源 3.2 获取 .XML 资源 3.3 获取代码资源 1. 签名的作用 Andr ...

  5. java1.7 apk 签名_【keytool jarsigner工具的使用】Android 使用JDK1.7的工具 进行APK文件的签名,以及keystore文件的使用...

    你看到的这个文章来自于http://www.cnblogs.com/ayanmw 一个android apk的编译过程 请参考: http://www.2cto.com/kf/201312/26147 ...

  6. java1.7 apk 签名_【keytool jarsigner工具的使用】Android 使用JDK1.7的工具 进行APK文件的签名,以及keystore文件的使用...

    一个android apk的编译过程 请参考: http://www.2cto.com/kf/201312/261475.html 典型的编译过程: aapt( Android Asset Packa ...

  7. [Android]使用platform密钥来给apk文件签名的命令

    1.使用platform密钥对apk进行签名 1.1.进入<Android_Source_Path>/build/target/product/security,找到[platform.p ...

  8. Windows11下安装安卓Android应用教程(windows系统安装apk文件),亲测有效

    今日按照网上教程测试了一下如何在Windows11下安装安卓Android应用,现将过程分享给各位有需要的朋友. 废话不多说,直接上图: 1,在设置中将区域改为美国 2,打开Microsoft Sto ...

  9. android应用安装成功之后删除apk文件

    [摘要:题目: 正在运用开辟中碰到须要如许的需供:正在用户下载我们的运用装置以后删除装置包. 办理:  android会正在每一个中界操纵APK的举措以后收回体系级其余播送,过滤器称号:] 问题:  ...

最新文章

  1. 【EventBus】EventBus 源码解析 ( 注册订阅者总结 | EventBus 注册订阅者流程梳理 )
  2. Bug总结:python语言中出现的import error错误的解决思路
  3. 科学计算机的显示怎么调整成出厂设置,笔记本电脑怎么恢复出厂设置
  4. 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  5. linux 粘贴网站地址,linux 复制粘贴
  6. 关于AI Architecture未来的一些思考
  7. tfs 文件系统部署_使用SQL Server数据工具和使用自定义工作流文件的TFS部署到多个数据库
  8. LOUVAIN——社交网络挖掘之大规模网络的社区发现算法
  9. SSH使用教程( Bitvise Tunnelier+Chrome+Proxy Switchy)
  10. Python告诉你咪蒙10w+文章标题的秘密
  11. 【每日随笔】操控人性 ① ( 圣人的治理原则 | 控制人性的三大手段 - 引导 / 转移注意力 / 打击异己 | 作出正确的引导 | 不尚贤,使民不争 | 不追求权利 / 财富 )
  12. 解决windows自带远程桌面无法打开某些软件(模拟器等)
  13. C#根据出生日期计算年龄的源码
  14. 文章随笔日记完全不通呀
  15. (转)Android Jetpack Compose 最全上手指南
  16. 2022无线WIFI路由器的不常用功能整理(带USB接口,可插手机卡)适合短期出差、拉有线网络不方便等。
  17. 自满型性格分析,如何改变自满型性格?
  18. AE基础教程(15)——第15章 质量图标和效果开关
  19. 超实用工具you-get(爬取视频数据神器)
  20. el-table默认选中

热门文章

  1. vim配置@year12
  2. gulp实现打包js/css/img/html文件,并对js/css/img文件加上版本号
  3. 【AndroidSupport】LinearLayoutCompat
  4. nginx 安装禅道
  5. Group by优化
  6. powerpoint打字慢
  7. Windows 7会成为Win XP第二的10大理由
  8. 笑谈.Net的开发境界
  9. Linux网络篇基础知识
  10. 邓俊辉数据结构学习-3-栈