文档章节

apk签名详细原理及jarsigner版本问题

asay
 asay
发布于 2016/05/17 16:58
字数 462
阅读 351
收藏 0
点赞 2
评论 0

1.首先了解你的keystore是啥。

keytool -list -v -keystore /Users/mac/.android/debug.keystore 

别名: androiddebugkey
创建日期: 2013-11-30
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=Android Debug, O=Android, C=US
发布者: CN=Android Debug, O=Android, C=US
序列号: 565bb50d
有效期开始日期: Mon Nov 30 10:31:41 CST 2013, 截止日期: Wed Nov 22 10:31:41 CST 2099
证书指纹:
     MD5: A4:4A:9F:CA:5B:F9:BB:4C:04:5B:B7:FF:35:70:F3:13
     SHA1: 80:E5:B2:E4:DC:16:AB:B8:79:70:59:CD:0F:ED:F3:3B:CB:66:CA:6A
     SHA256: 0A:8W:64:74:69:0A:D7:R4:C6:72:86:67:35:9D:DC:BA:D2:CB:45:D7:04:E0:81:7F:70:A3:0C:CF:E4:93:B2:BF
     签名算法名称: SHA1withRSA
     版本: 3

这个是自动生成的debug签名keystore,对apk进行签名后,其中的指纹信息会包含进apk中,每个apk对应一套信息。

2.在手机上更新apk,应用检验等多种情况会使用到这些指纹信息。

PackageManager pm = getContext().getPackageManager();
PackageInfo packageInfo = pm.getPackageInfo("com.xxx.xxx", 64);
Signature[] signatures = packageInfo.signatures;
byte[] bytes = signatures[0].toByteArray();
String md5 = MD5(bytes);

获得的md5串就等于上面的MD5的值,为a44a9fcaxxxxxxxx.....

3.签名过程中命令需要写的完整,否则使用jdk6和jdk7会造成结果有些许差别。

jarsigner -keystore debug.keystore -storepass 123456 -signedjar output.apk -digestalg SHA1 -sigalg MD5withRSA input.apk myalias

上面是完整命令。我之前在使用jdk7时没有指定digest和sign算法,造成apk无法安装。

嗯,命令很长,推荐写个sh脚本调用。注意,工具都要在 PATH 中能找到啊。

apksigner.sh :

#!/bin/bash
if [ $# != 2 ] 
  then
  echo "usages:" $0 "inputFile" "outputFile"
  exit 1
fi

jarsigner -keystore /to/your/path/debug.keystore -storepass 123456 -signedjar $2 -digestalg SHA1 -sigalg MD5withRSA $1 myalias

加入PATH后,随意调用:

apksigner.sh input.apk output.apk

完美!

最后,不要忘了zipalign一下

zipalign -v 4 infile.apk outfile.apk

© 著作权归作者所有

共有 人打赏支持
asay
粉丝 0
博文 14
码字总数 5272
作品 0
郑州
Android开发签名问题

Android系统要求所有的程序经过数字签名才能安装,如果没有可用的数字签名,系统将不许安装运行此程序,不管是模拟器还是真实手机。因此,在设备或者是模拟器上运行调试程序之前,必须为应用...

GeminiLiu ⋅ 2014/06/05 ⋅ 0

Android应用程序签名 debug签名

Android系统要求所有的程序经过数字签名才能安装,如果没有可用的数字签名,系统将不许安装运行此程序,不管是模拟器还是真实手机。因此,在设备或者是模拟器上运行调试程序之前,必须为应用...

长平狐 ⋅ 2012/08/28 ⋅ 1

Android 应用程序签名

Android应用程序签名相关的理论知识包括:什么是签名、为什么要给应用程序签名、如何给应用程序签名等。 1、什么是签名? 如果这个问题不是放在Android开发中来问,如果是放在一个普通的版块...

长平狐 ⋅ 2013/01/06 ⋅ 0

关于Android的签名问题

在整个平台的安全性方面Google也使用了Android签名机制,当然这里使用Sun的针对Jar文件签名工具jarsigner即可,这里我们需要了解一些问题,为什么要签名? 其实安装到真机G1的软件都必须签名。...

无鸯 ⋅ 2011/09/15 ⋅ 3

Android:apk签名

一、android apk签名有几种方法? 1、利用jdk工具进行apk签名 2、利用Eclipse中的ADT对apk进行签名 二、每种签名方法具体怎么操作? 1、利用jdk工具进行签名: a、运行dos,cd到apk所在的目录...

天外来客1101 ⋅ 2013/07/04 ⋅ 0

android 上传前签名

Android程序签名详解、打包、发布到Google play步骤 . 分类: CNDN李伟 CSDN android android应用签名 android应用发布 google play发布 2012-09-03 12:49 8674人阅读 评论(0) 收藏 举报 an...

andyhe91 ⋅ 2015/01/26 ⋅ 0

Android签名总结

一、为什么要签名 开发Android的人这么多,完全有可能大家都把类名,包名起成了一个同样的名字,这时候如何区分?签名这时候就是起区分作用的。 由于开发商可能通过使用相同的Package Name来...

郏高阳 ⋅ 2014/07/11 ⋅ 0

怎么使用命令对APK包进行签名

| 浏览:928 | 更新:2015-02-04 02:17 1 2 3 4 5 6 7 分步阅读 在某些场合下,没有外在工具,需要对一个未签名的APK包进行签名,那就可以通过命令来对Android应用进行手动签名。 工具/原料 ...

andyhe91 ⋅ 2015/08/12 ⋅ 0

Android APK快速签名—优化打包时间

一、Android签名机制 Android签名机制可划分为ROM签名机制与第三方APK签名机制,在这里只讨论APK签名机制。 Android系统在安装APK的时候,首先会检验APK的签名,如果发现签名文件不存在或者校...

网易云捕 ⋅ 2016/06/02 ⋅ 3

Android签名总结

Android签名总结 signapk.jar与eclipse export插件默认赋予程序一个DEBUG权限的签名 signapk.jar包含有系统权限(system api, permission),而eclipse export插件默认赋予程序一个DEBUG权限...

Java编程思想 ⋅ 2014/06/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周日乱弹 —— 这么好的姑娘都不要了啊

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @TigaPile :分享曾惜的单曲《讲真的》 《讲真的》- 曾惜 手机党少年们想听歌,请使劲儿戳(这里) @首席搬砖工程师 :怎样约女孩子出来吃饭,...

小小编辑 ⋅ 17分钟前 ⋅ 1

Jenkins实践3 之脚本

#!/bin/sh# export PROJ_PATH=项目路径# export TOMCAT_PATH=tomcat路径killTomcat(){pid=`ps -ef | grep tomcat | grep java|awk '{print $2}'`echo "tom...

晨猫 ⋅ 今天 ⋅ 0

Spring Bean的生命周期

前言 Spring Bean 的生命周期在整个 Spring 中占有很重要的位置,掌握这些可以加深对 Spring 的理解。 首先看下生命周期图: 再谈生命周期之前有一点需要先明确: Spring 只帮我们管理单例模...

素雷 ⋅ 今天 ⋅ 0

zblog2.3版本的asp系统是否可以超越卢松松博客的流量[图]

最近访问zblog官网,发现zlbog-asp2.3版本已经进入测试阶段了,虽然正式版还没有发布,想必也不久了。那么作为aps纵横江湖十多年的今天,blog2.2版本应该已经成熟了,为什么还要发布这个2.3...

原创小博客 ⋅ 今天 ⋅ 0

聊聊spring cloud的HystrixCircuitBreakerConfiguration

序 本文主要研究一下spring cloud的HystrixCircuitBreakerConfiguration HystrixCircuitBreakerConfiguration spring-cloud-netflix-core-2.0.0.RELEASE-sources.jar!/org/springframework/......

go4it ⋅ 今天 ⋅ 0

二分查找

二分查找,也称折半查找、二分搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于...

人觉非常君 ⋅ 今天 ⋅ 0

VS中使用X64汇编

需要注意的是,在X86项目中,可以使用__asm{}来嵌入汇编代码,但是在X64项目中,再也不能使用__asm{}来编写嵌入式汇编程序了,必须使用专门的.asm汇编文件来编写相应的汇编代码,然后在其它地...

simpower ⋅ 今天 ⋅ 0

ThreadPoolExecutor

ThreadPoolExecutor public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, ......

4rnold ⋅ 昨天 ⋅ 0

Java正无穷大、负无穷大以及NaN

问题来源:用Java代码写了一个计算公式,包含除法和对数和取反,在页面上出现了-infinity,不知道这是什么问题,网上找答案才明白意思是负的无穷大。 思考:为什么会出现这种情况呢?这是哪里...

young_chen ⋅ 昨天 ⋅ 0

前台对中文编码,后台解码

前台:encodeURI(sbzt) 后台:String param = URLDecoder.decode(sbzt,"UTF-8");

west_coast ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部