还望支持个人博客站:http://www.enjoytoday.cn

参考博客:http://www.enjoytoday.cn/posts/203

为什么要签名

在介绍签名方法之前,首先我们来了解下,android系统为何需要我们签名后才可安装运行apk,其实这个签名和我们生活中的信用卡签名并无本质不同,就是一个对apk身份的验证,对于apk的一种担责行为。apk前面采用加密算法(RSA或DSA)对apk加密验证以确保在apk安装运行之前的文件完整性和未被修改。

签名前的准备

签名其实说白了即使对文件进行加密,将整个文件给”锁起来”了。因此, apk前面前需要获取两个文件,一个是android已经编译成功 的apk文件,另一个即使apk的签名文件。当然,签名前你还是需要知道你的签名文件的签名基本参数的:别名和签名密码。所以在签名之前,我们需要做两个最基础的事情:一是编译生成apk文件,二是创建私有签名文件,apk文件编译胡不多赘述,主要来说如何生成一个签名文件。

签名文件的生成

签名文件的生成方式主要有两种,一种是工具式的可视化生成,一种是通过命令行方式生成。下面我主要介绍通过命令行方式生成一个前面文件*.jks.

命令行生成的前提是需要你已经成 功安装配置java运行时环境,生成签名证书使用的是java源码工具下的一个工具keytool,命令格式如下:

#keytool -genkey -alias keyname -keyalg RSA --validity    20000 -keystore keyname.jks -storepass storepass -keypass keypass

各个选项的含义如下所示:

  -genkey        : 生成.jks或.keystore文件
-alias :签名文件的别名,若需要导入eclipse对应用进行签名则需要设置为 androiddebugkey
-keyalg : 加密方式
-validity : 有效时间
-keystore : .jks或.keystore文件名
-storepass :store仓库密码,若需要导入eclipse对应用进行签名则需要设置为android
-keypass : .jks或.keystore文件的密码

命令运行后会显示一些需要你输入的信息,包括公司信息、个人地址、个人姓名等相关信息,显示如下:

最后确认后就会在当前目录生成一个keyname.jks前面文件,如此就完成了一个签名文件的创建过程 。

开始签名

命令行签名使用的是java自带工具jarsigner签名工具签名,签名使用使用的命令如下:

#jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore keyname.jks -signedjar. test.tspk  release.apk   keyname

如此就可成功将test.apk签名成功,输出签名成功后的apk文件release.apk.

查看签名

签名后我们可以通过keytool工具对我们的apk进行查看签名信息,结果会输出你签名时填入的相关信息,以及一个生成的sha1和md5值,命令如下:

#keytool -printcert -jarfile release.apk

结果显示如下:


签名者 #1: 签名: 所有者: C=US, O=Android, CN=Android Debug
发布者: C=US, O=Android, CN=Android Debug
序列号: 1
有效期开始日期: Sun May 15 02:14:14 CST 2016, 截止日期: Tue May 08 02:14:14 CST 2046
证书指纹:
MD5: 7C:79:6B:BD:C5:CE:9C:A5:BB:3F:F2:20:39:6A:A7:B5
SHA1: 4A:00:08:BE:CC:A6:9A:CE:7D:82:F5:84:C1:31:C6:19:99:12:84:53
SHA256: A1:36:20:F4:E3:32:9C:32:F7:28:B1:8A:EB:15:42:37:1C:A5:10:47:47:A1:E2:12:AB:29:C5:62:35:05:C4:B3
签名算法名称: SHA1withRSA
版本: 1

Android apk签名方法介绍的更多相关文章

  1. Android APK 签名比对(转)

    Android apk签名的过程 1. 生成MANIFEST.MF文件: 程序遍历update.apk包中的所有文件(entry),对非文件夹非签名文件的文件,逐个生成SHA1的数字签名信息,再用Ba ...

  2. Android apk签名详解——AS签名、获取签名信息、系统签名、命令行签名

    Apk签名,每一个Android开发者都不陌生.它就是对我们的apk加了一个校验参数,防止apk被掉包.一开始做Android开发,就接触到了apk签名:后来在微信开放平台.高德地图等平台注册时,需要 ...

  3. Android APK 签名 (转发)

    Cordova 3.5 为 Android APK 签名,生成可发布的 APK 程序文件  任侠  2014-06-07 00:04  移动开发  抢沙发  16,288 views  目录 [隐藏] ...

  4. Android apk签名的两种方法

    编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! 为了保证 ...

  5. [转]Android APK签名原理及方法

    准备知识:数据摘要 这个知识点很好理解,百度百科即可,其实他也是一种算法,就是对一个数据源进行一个算法之后得到一个摘要,也叫作数据指纹,不同的数据源,数据指纹肯定不一样,就和人一样. 消息摘要算法(M ...

  6. Android : apk签名的多种方法以及key的配置

    方法一:使用Android SDK中的签名工具给apk签名: (1)Android源码的 build/target/product/security/ 目录下有 media.pk8.media.x50 ...

  7. Android APK签名

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

  8. Android APK安装过程介绍

    课题路径:从Myfile中点击应用进行安装,到安装完成,过程分析 思想方法:在研究PreloadInstaller的时候我们直接从整个apk的文件结构入手,由整体到部分的分析:但现在整个PMS非常庞大 ...

  9. apk签名方法

    生成签名文件: 1.右击项目管理器 选择 Export...  菜单: 2.在弹出的Export窗口中选择 Android->Export Android Application 后 next: ...

随机推荐

  1. JS基础语法---编程思想和对象

    编程思想: 把一些生活中做事的经验融入到程序中 面向过程:凡事都要亲力亲为,每件事的具体过程都要知道,注重的是过程 面向对象:根据需求找对象,所有的事都用对象来做,注重的是结果 面向对象特性: 封装, ...

  2. arcgis api 4.x for js 集成 Echarts4 实现模拟迁徙图效果(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 4.x for js:esri 官网 api,里面详细的介绍 arcgis api 4.x 各个类 ...

  3. 数据库在线导出工具:Adminer

    数据库在线导出工具:Adminer Adminer是一个类似PhpMyAdmin的MySQL客户端的"页面PHP",它只有一个PHP文件,包括:数据库的普通和函数操作等功能,是一个 ...

  4. grant localhost and % for mysql

  5. springmvc的文件上传和JWT图形验证码

    相关pom依赖 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commo ...

  6. 趣谈Linux操作系统学习笔记:第二十五讲

    一.mmap原理 在虚拟内存空间那一节,我们知道,每一个进程都有一个列表vm_area_struct,指向虚拟地址空间的不同内存块,这个变量名字叫mmap struct mm_struct { str ...

  7. golang数据结构之插入排序

    //InsertSort 插入排序 func InsertSort(arr *[]int) { ; i < len(arr); i++ { insertVal := (*arr)[i] inse ...

  8. js实现addClass方法,classList与className有什么区别?

     壹 ❀ 引 Jquery中addClass与removeClass是两个使用高频的方法,对于为dom元素增删class类非常方便:但如果不用JQ,使用js怎么模拟它们呢?本文主要记录下自己的实现思路 ...

  9. angular ng-bind-html异常Attempting to use an unsafe value in a safe context处理

    在angular中使用ng-data-html渲染dom时,遇到了一个Attempting to use an unsafe value in a safe context错误,官方给出的理由是‘试图 ...

  10. 手动创建分区以及软硬raid的问题

    本文章旨在介绍安装centos7时手动分区问题,及其所对应的软硬raid问题.在新建centos7系统时,需要手动分区时,提供给我们三个选项: 在上图中,默认选项为“Standard Partitio ...