Android创建私钥并为APK文件签名的相关命令

创建私钥命令:

keytool -genkey -keystore .keystore -keyalg RSA -validity -alias

该命令位于jdk安装目录的bin目录下,用于创建签名用的私钥。

其中:

-genkey 表示创建私钥。

-keystore 后面跟私钥仓库的名称,如果指定的仓库不存在,则创建一个新的仓库文件。

-keyalg 表示加密方式,一般跟RSA即可。

-validity 表示有效期限,单位为天,可以指定36500,即100年。

-alias 表示要添加的私钥名称,这个名称会被添加并存储到仓库文件中。

命令执行后,需要再输入一些信息,最后输入Y确认。

其中涉及到两个密码,一个是私钥仓库的密码,一个是具体私钥的密码,可以相同。

当输入完私钥的密码后,命令执行完成。

签名命令:

jarsigner -verbose -keystore .keystore -signedjar .apk .apk

该命令位于jdk安装目录的bin目录下,用于使用私钥对未签名APK进行签名。

其中:

-verbose 表示输出相关信息。

-keystore 后面跟签名时使用的私钥所在的仓库文件。

-signedjar 表示对文件进行签名,后面跟三个参数:

第一个为签名后的文件名。

第二个为未签名的文件名,可以使用Eclipse的插件Android Tools导出未签名APK。

第三个是使用的私钥名称。

命令执行后,需要输入相关密码,然后输出相关信息,直到命令结束。

另外需要注意的是,如果是JDK1.7的版本,需要在签名命令后边添加如下参数:

-digestalg SHA1 -sigalg MD5withRSA

否则,最后签名的APK不能被安装,会提示以下错误:

Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

对齐优化命令:

zipalign -v 4 .apk .apk

该命令位于sdk安装目录下的tools目录下,用于对已签名APK进行对齐优化。

其中:

-v 表示对齐的字节数,一般指定为4即可。

后面紧跟的两个参数分别为未对齐优化的文件名和优化后的文件名。

对已签名文件进行对齐优化后,可以得到更好的执行速度。

================================================================================

Eclipse下使用ADT插件进行图形化的签名相关的操作

生成签名的APK:

该过程将包含生成私钥仓库、生成私钥、打包APK、为APK签名、对APK对齐优化等一系列操作。

Android工程目录下的bin目录下,由Eclipse自动生成的APK文件是使用了默认的debug签名的。

使用该方式签名的apk可以安装到设备上,但是不同的环境,可能debug签名不同,并不通用。

而且,debug签名的APK无法发布到Market上。

可以用如下方式导出一个APK并进行签名:

工程->右键->Export->Android->Export Android Application...

或者

工程->右键->Android Tools->Export Signed Application Package...

在打开的窗口中,如果想要修改导出的工程,可以点击Browse进行修改。点击Next继续。

这里有两个选项:

Use existing keystore 使用既存的私钥仓库文件。

Create new keystore 创建一个新的私钥仓库文件。

一般的,如果已经创建了一个仓库文件,选择第一项即可,否则,需要选择第二项,创建一个新的仓库文件。

1、创建一个新的仓库文件:

Location 私钥仓库文件的保存位置。

Password 私钥仓库的密码。

Confirm 再次确认私钥仓库的密码。

2、使用已有的仓库文件:

Location 既存私钥仓库文件的位置。

Password 既存私钥仓库的密码。

点击Next继续。

这里又有两个选项:

Use existing key 使用已经存在的私钥对APK进行签名。

Create new key 创建一个新的私钥用于对APK进行签名。

1、创建一个新的私钥:

选中Create new key后,点击Next继续。

在打开的窗口中,输入相关参数,其中:

Alias 私钥名称。

Password 私钥的密码。

Confirm 再次确认私钥密码。

Validity (years) 有效期,单位是年,与命令行执行时的单位不同。

下面的可选参数里,必须有一项不为空,其它可选参数可以不填。

2、使用已有的私钥:

Alias 下拉列表里会列出私钥仓库文件里存在的私钥,选择想要使用的私钥。

Password 输入选择的私钥对应的密码。

点击Next继续。

在新窗口中,选择签名后的文件保存的位置,点击Finish完成上述所有操作。

生成未签名的APK:

使用命令的方式对APK进行签名,该APK必须是未签名的。

如果对已签名文件进行再签名,不会成功。如下方式可以得到一个未签名的APK:

工程->右键->Android Tools->Export Unsigned Application Package...

另外,新的ADT会在工程目录下生成proguard.cfg文件,使用它可以在签名时混淆代码。

混淆代码可以加大反编译代码后的理解难度,起到保护代码的作用。

使用方法是,修改工程目录下的project.properties文件,在最后添加:

proguard.config=proguard.cfg

apk私钥_Android创建私钥并为APK文件签名相关推荐

  1. apk私钥_Android应用apk的程序签名详解

    在Android系统中,要求所有应用程序必须经过数字签名后才能安装.Android系统使用这个证书来识别应用程序的作者,并建立程序间的信任关系. 证书并不用让于用户控制可以安装哪些程序,证书也不需要授 ...

  2. 安卓java安装apk代码_Android 通过代码安装 APK的方法详解

    在 APK 开发中,通过 Java 代码来打开系统的安装程序以安装 APK 并不是什么难事,一般的 Android 系统都有开放这一功能. 但随着 Android系统版本的迭代,其对于权限的把控越来越 ...

  3. Android APK文件结构 完整打包编译的流程 APK安装过程 详解

    Android apk文件结构 打包编译的流程 Android官网 配置构建 流程 Configure your build The build process APK文件结构 assets res ...

  4. 【Android 安全】DEX 加密 ( Java 工具开发 | apk 文件签名 )

    文章目录 一.生成 jks 文件 二.签名命令 三.执行结果 四.处理 Unsupported major.minor version 52.0 错误 参考博客 : [Android 安全]DEX 加 ...

  5. RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密

    RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作. RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一 ...

  6. React Native之APK文件签名及打包

    生成apk签名文件 我们使用android studio的方式进行签名 AS工具栏找到并点击 build->gennrate signed apk 两种情况: 1.这里如果已经有签名文件了则直接 ...

  7. 如何给apk文件签名(一)

    给apk文件签名主要分三步,创建证书(如果没有)-->签名-->优化(可选 ) 1)使用jdk的keytool工具生成签名用的证书 > keytool -genkey -v -ali ...

  8. [Android 之美] 那些你不知道的APK 瘦身,让你的APK更小

    [Android 之美] APK 瘦身,减少APK的大小 让我们的apk文件尽可能更小,移除那些未使用的代码和资源文件.本章节介绍了如何做到让APK更小,性能更好,下载转化率会更高,以及如何指定在构建 ...

  9. 关于apk加壳之动态加载dex文件

    由于自己之前做了一个关于手机令牌的APK软件,在实现的过程中尽管使用了native so进行一定的逻辑算法保护,但是在自己逆向破解的过程中发现我的手机令牌关键数据能够"轻易地"暴露 ...

最新文章

  1. appium运行报错java.net.SocketException: socket write error
  2. php 格式化html,HTML代码如何格式化
  3. javafx应用启动自动执行函数_一张图,理顺 Spring Boot应用在启动阶段执行代码的几种方式...
  4. python PyQt5 sizeHint()
  5. 《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第十一章——自编解析与答案
  6. 工作197:判断对象里面是否有0和1
  7. Git SSH key配置
  8. TCP/IP 协议栈 -- 编写UDP客户端注意细节
  9. Tkinter图片按钮
  10. socket connect java_网络编程 – 为什么Java的socket.connect()消耗100%的cpu资源?
  11. 1到100的偶数之和是多少_什么白酒适合收藏,收藏多久出手,茅台五粮液老酒价格是多少?...
  12. 牛逼!这么问 OutOfMemoryError 能让我懵逼!
  13. 基于FPGA的波束形成verilog开发
  14. win7电脑怎么录屏?如何使用电脑录屏软件
  15. Nacos注册中心和配置中心
  16. PS网页设计教程XXII——在PS中创建单页复古网页布局
  17. 雷神笔记本关闭触摸板
  18. 4G+5G多卡聚合智能融合通信
  19. 哔哩哔哩(bilibili)视频下载-支持4K
  20. hello.s:15: 错误: junk at end of line, first unrecognized character valued 0x8 的解决方法

热门文章

  1. python物联网工具
  2. 学习笔记【Java 虚拟机④】内存模型
  3. 水墨屏开发设备,旧 Kindle 改造而成
  4. [FAQ09065][Others]MTK发布的Android software Tools 工具包中所有工具的说明
  5. JavaMail 访问Hotmail
  6. Hypermesh14.0主界面显示不全
  7. vue CLI异步组件报错import' and 'export' may only appear at the top level
  8. HAL库+stm32cubeIDE+4.3寸LCD显示器驱动移植
  9. java进行视频合成_java使用ffmpeg进行多个视频合并
  10. mysql 库比对_库比蒂诺日期时间选择器