搜索
热搜: 活动 交友 discuz
查看: 2491|回复: 0

[系统定制] APK/ROM签名之keytool生成自己的keystore和jarsigner签名

[复制链接]

29

主题

30

帖子

164

积分

超级版主

Rank: 8Rank: 8

积分
164
发表于 2018-12-11 11:00:05 | 显示全部楼层 |阅读模式


android程序的签名和Symbian类似都可以自签名(Self-signed),但是在android平台中APK签名的证书初期还显得形同虚设,平时开发时通过ADB接口上传的程序会自动被签有Debug权限的APK签名程序。需要签名验证在上传程序到android Market的时候大家都发现问题可。下面是android signed生成的制作方法



  首先在android开发时没有安装JAVA JDK的网友在甲骨文官方网站下载JDK ,我们所用到的就是其中的Keytool和Jarsigner。




官网下载提示:点击链接按钮 Java Platform (JDK) 8u5 或按钮 JDK(Download)都可进入jdk下载页面

进入JDK下载页面后要点选 Accept License Agreement 才能下载,不知道电脑是多少位系统的都可下32位的

32位系统下载:Windows x86 151.71 MB jdk-8u5-windows-i586.exe

64位系统下载:Windows x64 155.18 MB jdk-8u5-windows-x64.exe




APK签名分为两个步骤,首先通过keytool生成用来签名的 xxx.keystore ,然后再用jarsigner签名apk



第一步 :生成Keystore

唤出CMD: 开始—运行—输入CMD后点确定或按ENTER回车键,唤出CMD后输入下面命令后按回车键:

cd /d C:\Program Files\Java\jdk1.7.0\bin    (JDK的安装目录)

            

输入后按回车

再输入下面命令后按回车

    keytool -genkey -alias abc.keystore -keyalg RSA -validity 20000 -keystore abc.keystore
abc可改为abc等,命令区分大小写。



执行命令后会出现下面步骤:


  • 输入keystore密码:[密码不显示,输入密码按回车即可开

  • 再次输入新密码:[密码 不显示,输入密码按回车即可开

  • 您的名字与姓氏是什么?

  •   [Unknown]:  tttabc

  • 您的组织单位名称是什么?

  •   [Unknown]:  bbs.zecoki.com

  • 您的组织名称是什么?

  •   [Unknown]:  bbs.zecoki.com

  • 您的组织名称是什么?

  •   [Unknown]:  bbs.zecoki.com

  • 您所在的城市或区域名称是什么?

  •   [Unknown]:  Shen Zhen

  • 您所在的州或省份名称是什么?

  •   [Unknown]:  Shen Zhen

  • 该单位的两字母国家代码是什么

  •   [Unknown]:  CN

  • CN=abc, OU=www.tttabc.com, O=www.tttabc.com, L=New York, ST

  • =New York, C=CN 正确吗?

  •   [否]:  Y

  • 输入的主密码
  •         (如果和 keystore 密码相同,按回车):
成功后将会在C:\Program Files\Java\jdk1.7.0\bin 下产生一个名为abc.keystore的文件




其中参数-validity为证书有效天数,这里我们写的大些20000天。还有在输入密码时没有回显,只管输入就可以了,一般位数建议使用20位,最后需要记下来后面还要用:

  接下来我们开始为apk文件签名了。





第二步 :用jarsigner签名apk

将要签名的APK放到C:\Program Files\Java\jdk1.7.0\bin 下

apk最好命名为简单的名字 如123.apk

唤出CMD: 开始—运行—输入CMD后点确定或按ENTER回车键,唤出CMD后输入下面命令后按回车键:

cd /d C:\Program Files\Java\jdk1.7.0\bin      

           

输入后按回车

再输入下面命令后按回车

    jarsigner -verbose -keystore abc.keystore -signedjar 123x.apk 123.apk abc.keystore
然后输入密码按回车

就可以生 成签名的apk文件,这里输入文件abc.apk,最终生成123x.apk为android签名后的APK执行文件。下面提示输入的密码和keytool输入的一样就行了 。



如果是修改APK或ZIP格式刷机ROM需要签名推荐用auto-sign签名,简单方便:

下载 APK/ROM签名工具 ,运行需安装JAVA jdk,auto-sign解压到如E盘下,将需要签名的APK或ZIP放到 auto-sign签名工具同目录下,运行auto-sign签名批处理工具即可自动签名。

---------------------------------------------------------------------------

下面内容没什么用的:

有关android程序发布和签名可以查看SDK中 http://code.google.com/android/devel/sign-publish.html 一文.



  附上keytool参数以及jarsigner参数:

  keytool用法:

-certreq     [-v] [-protected]

             [-alias ] [-sigalg ]

             [-file ] [-keypass ]

             [-keystore ] [-storepass ]

             [-storetype ] [-providername ]

             [-providerclass  [-providerarg ]] ...

             [-providerpath ]

-changealias [-v] [-protected] -alias  -destalias

             [-keypass ]

             [-keystore ] [-storepass ]

             [-storetype ] [-providername ]

             [-providerclass  [-providerarg ]] ...

             [-providerpath ]

-delete      [-v] [-protected] -alias

             [-keystore ] [-storepass ]

             [-storetype ] [-providername ]

             [-providerclass  [-providerarg ]] ...

             [-providerpath ]

-exportcert  [-v] [-rfc] [-protected]

             [-alias ] [-file ]

             [-keystore ] [-storepass ]

             [-storetype ] [-providername ]

             [-providerclass  [-providerarg ]] ...

             [-providerpath ]

-genkeypair  [-v] [-protected]

             [-alias ]

             [-keyalg ] [-keysize ]

             [-sigalg ] [-dname ]

             [-validity ] [-keypass ]

             [-keystore ] [-storepass ]

             [-storetype ] [-providername ]

             [-providerclass  [-providerarg ]] ...

             [-providerpath ]

-genseckey   [-v] [-protected]

             [-alias ] [-keypass ]

             [-keyalg ] [-keysize ]

             [-keystore ] [-storepass ]

             [-storetype ] [-providername ]

             [-providerclass  [-providerarg ]] ...

             [-providerpath ]

-help

-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]

             [-alias ]

             [-file ] [-keypass ]

             [-keystore ] [-storepass ]

             [-storetype ] [-providername ]

             [-providerclass  [-providerarg ]] ...

             [-providerpath ]

-importkeystore [-v]

             [-srckeystore ] [-destkeystore ]

             [-srcstoretype ] [-deststoretype ]

             [-srcstorepass ] [-deststorepass ]

             [-srcprotected] [-destprotected]

             [-srcprovidername ]

             [-destprovidername ]

             [-srcalias  [-destalias ]

               [-srckeypass ] [-destkeypass ]]

             [-noprompt]

             [-providerclass  [-providerarg ]] ...

             [-providerpath ]

-keypasswd   [-v] [-alias ]

             [-keypass ] [-new ]

             [-keystore ] [-storepass ]

             [-storetype ] [-providername ]

             [-providerclass  [-providerarg ]] ...

             [-providerpath ]

-list        [-v | -rfc] [-protected]

             [-alias ]

             [-keystore ] [-storepass ]

             [-storetype ] [-providername ]

             [-providerclass  [-providerarg ]] ...

             [-providerpath ]

-printcert   [-v] [-file ]

-storepasswd [-v] [-new ]

             [-keystore ] [-storepass ]

             [-storetype ] [-providername ]

             [-providerclass  [-providerarg ]] ...

             [-providerpath ]

jarsigner用法: [选项] jar 文件别名

       jarsigner -verify [选项] jar 文件

[-keystore ]           密钥库位置

[-storepass ]         用于密钥库完整性的口令

[-storetype ]         密钥库类型

[-keypass ]           专用密钥的口令(如果不同)

[-sigfile ]           .SF/.DSA 文件的名称

[-signedjar ]         已签名的 JAR 文件的名称

[-digestalg ]    摘要算法的名称

[-sigalg ]       签名算法的名称

[-verify]                   验证已签名的 JAR 文件

[-verbose]                  签名/验证时输出详细信息

[-certs]                    输出详细信息和验证时显示证书

[-tsa ]                时间戳机构的位置

[-tsacert ]           时间戳机构的公共密钥证书

[-altsigner ]           替代的签名机制的类名

[-altsignerpath ] 替代的签名机制的位置

[-internalsf]               在签名块内包含 .SF 文件

[-sectionsonly]             不计算整个清单的散列

[-protected]                密钥库已保护验证路径

[-providerName ]      提供者名称

[-providerClass         加密服务提供者的名称

[-providerArg ]] ... 主类文件和构造函数参数


默认生成的APK文件是debug签名的,如果要发布到android Market那么需要另外用

keytool和jarsigner来给你的APK签名(主要是设定时间和所有者).



按照常见步骤

第一步:

    keytool -genkey -v -keystore android.keystore -alias android.keystore -keyalg RSA -validity 20000

第二步:

    jarsigner -verbose -keystore android.keystore -signedjar android_signed.apk android.apk android.keystore



来源:{http://bbs.zecoki.com/forum-70-1.html}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




上一篇:小米删温控,改机型,王者荣耀VT优化模式,视频教程
下一篇:Android ROM制作开发教程、原理
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

抖音账号
关注抖音
加入粉丝群,抽取论坛金币


Archiver|手机版|小黑屋|IT趣-GEEK社区

GMT+8, 2024-4-20 05:21 , Processed in 0.059055 second(s), 22 queries .

Powered by Discuz! X3.4. 技术支持 by 巅峰设计

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表