将本地的java从版本1.6 升级到 1.8 的时候,apk 签名后安装到手机上,出现 “Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]”,弄了半天不知道咋回事,然后把java的jdk版本切换到1.6的时候,一切又正常了,因此怀疑对apk的签名,会跟jdk的版本不同而有所不同。网上搜了一下,果然如此,而且在android的开发者社区已经有了相关说明。

注:文章参考了 android 开发者社区的签名指引说明文章,但由于在国内 android 开发者社区已经无法正常访问,因此在这里做下记录。

地址:http://developer.android.com/tools/publishing/app-signing.html#considerations

  在开发 android 应用程序的时候,到最后程序都需要进行签名后才可以发布,目前针对 android 应用开发的 ide 一般都会自带了签名的功能,例如 android studio、eclipse、intellij idea。如果您喜欢使用 ide 自带的功能签名,您就不需要再继续往下看了。以下主要是进行 android apk 手动签名的教程,虽然本人并不是很喜欢这种方式,但是公司的两位前辈都比较倾向于使用 bash 脚本,像这种打版本的事情就一般都是走脚本,一句命令,版本打好,发布关机走人。因此以下所用到的命令都是在 cygwin 的环境下执行的,因此前面带有 $ 这个符号。 【ps :我不喜欢主要是不大懂 linux 的语法,哎,要记得东西太多了。】

  到目前为止,网上关于 android apk 签名的教程一般都停留在 java 1.6 版本或者之前,然而 java 现在已经更新到了 1.8 了,java 1.7 版本我并没有安装,就直接从 java 1.6 升级为 java 1.8 了,java 1.6 与 java 1.8 之间生成密钥和签名的命令格式有点不一样,1.6 版本的不在这文章的介绍范围内,网上一搜,基本全都是。

  1. 生成密钥(ps:“密钥” 和 “秘钥” 有什么区别?)

  输入命令:$ keytool -genkeypair -v -keystore test.keystore -alias test -keyalg RSA -validity 20000

  参数说明:

  1. genkeypari:生成密钥对。

  2. keystore:密钥库名称,如上所示"test.keystore"。

  3. alias:密钥的别名,在签名的时候需要用到。

  4. keyalg:密钥算法名称。

  5. validity:有效天数。

  运行效果图:

  

  

  2. 验证您所生成的密钥文件

  输入命令:$ keytool -list -v -keystore test.keystore

  运行效果图:

  

  3. 执行签名,由于我在写文章的时候没有现成的 apk,因此只在这里添加执行的命令。

  输入命令:$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1-keystore test.keystore xxx.apk test

  参数说明:

  1.在jdk 1.8 的环境下,sigalg 和 digestalg 这两个参数必须带上,否则签名出来的 apk 包是无法安装的。

  2. -keystore:后面是您所生成的密钥文件。

  3. xxx.apk 是你要签名的 apk。

  4. test 是密钥文件的别名。

  

  

更多相关文章

  1. 采用busybox 代替android 自带的shell
  2. 安卓NDK——原生开发工具包
  3. Google Android(安卓)SDK舍弃Java ME,支持Java Lite和Apache Harm
  4. Android:快速修改ramdisk.img脚本
  5. Ubuntu下安装VirtualBox和Android(安卓)安装到虚拟机中
  6. Android(安卓)源码本地编译脚本 & 编译Android系统
  7. ubuntu下adb调试android找不到设备的解决方法
  8. Android:删除预装应用
  9. 为Android安装BusyBox

随机推荐

  1. [Android]笔记7-RelativeLayout布局
  2. Android沉浸式状态栏
  3. Android的四种基本布局
  4. 由Android(安卓)65K方法数限制引发的思考
  5. Android studio 打不开官方虚拟机 100%成
  6. Android中 ScrollView(ListView)中嵌套List
  7. Android之toolbar的使用
  8. Android线程池
  9. Android学习-RecyclerView默认scrollbar
  10. 输入法软键盘搜索执行两次的解决方法