zoukankan      html  css  js  c++  java
  • 【Android开发】jarsigner重新打包apk

    签名(sign):在应用程序的特定字段写入特定的标记信息,表示该软件已经通过了签署者的审核。

    过程:使用私有密钥数字地签署一个给定的应用程序。

    作用
    识别应用程序作者;
    检測应用程序是否发生改变;
    有种程序升级。当新程序与旧程序签名不一致时,会发生冲突觉得不是同一APP,,要求新程序改包名。

    签名步骤:

    1. 安装并配置jdk;

    2. 进入jdk目录

    cd C:Program FilesJavajdk1.8.0in

    3. 生成android.keystore

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

    注意:

    • -keystore 后边紧跟 "android.keystore" 的是要生成的签名文件;
    • -alias 后边紧跟 "android.keystore" 的是签名文件的别名;


    此时在jdk的bin目录,已经生成了一个证书: android.keystore

    4. 进行签名

    jarsigner -verbose -keystore android.keystore -signedjar [签名后的apk路径+文件] [未签名的apk路径+文件] android.keystore

    注意:

    • -keystore 后边紧跟 "android.keystore" 的是上一步生成的签名文件;
    • 最后一个词 "android.keystore" 是上一步指定的签名文件的别名;
    • 如果不是 “.keystore” 类型的签名文件,而是 “.jks” 类型的,也可以拿过来直接替换使用。

    此时会出现一行警告:

    警告:未提供 -tsa 或 -tsacert, 此 jar 没有时间戳。如果没有时间戳, 则在签名者证书的到期日期 (2113-10-30) 或以后的任何撤销日期之后, 用户可能无法验证此 jar。

    jarsigner 签名命令里加入如下参数来解决:

    -digestalg SHA1 -sigalg MD5withRSA

    可以忽略,安装后测试是否可行!

    5.验证签名

    jarsigner -verify XiaomiVerifysignd.apk

    6. 优化apk
    不过需要把build-tools下的zipalin包放到tools下

    zipalign -v 4 XiaomiVerifysignd.apk XiaomiVerifysignd_new.apk

    附加:

    1. 根据 “.jks" 文件或者 ".keystore" 文件获取签名信息

    keytool -list -v -keystore [keystore文件名 或者 jks文件名]

    从中可以看到各种信息,其中就包含上边提到的别名,所以如果忘记或者不知道别名,可以再次获取到。

    2, 查看apk的签名信息

    jarsigner -verify -verbose -certs [keystore文件名 或者 jks文件名]

    备注: 其他参数可以参考:http://www.cnblogs.com/gccbuaa/p/7092556.html

  • 相关阅读:
    [HDU2136] Largest prime factor(素数筛)
    [luoguP1082] 同余方程(扩展欧几里得)
    基本数论算法
    [luoguP2444] [POI2000]病毒(AC自动机 + dfs)
    [luoguP2564] [SCOI2009]生日礼物(队列)
    在EditText插入表情,并发送表情
    程序员自我提高的几点建议
    CSS3悬停特效合集Hover.css
    带动画效果的jQuery手风琴
    android程序的真正入口
  • 原文地址:https://www.cnblogs.com/neo-java/p/10185011.html
Copyright © 2011-2022 走看看