zoukankan      html  css  js  c++  java
  • Android 打生产包(release)生成密钥(证书)及签名

    参考官方文档

    生成密钥(证书)文件

    keytool -genkey -v -keystore release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 
    说明:
     
    keytool 是一个工具命令
    -v  指的是将生成证书的详细信息打印到终端
    -genkey 表示生成key
    -keystore release-key.keystore 指定生成的密钥文件名,release-key.keystore就是指定的文件名,.keystore是证书的扩展名
    -alias alias_name 别名,这里指定别名为alias_name
    -keyalg RSA 生成密钥文件所用的算法,这里为RSA 
    -validity 10000 该密钥的有效天数
    -keysize 2048 指定2048位的密钥

    执行上述命令后,会在当前目录下生成一个release-key.keystore文件,如果当前目录下已有同名文件,则执行命令时会报密码错误(密码与之前创建这个密钥文件的密码不同时)

    过程中会要求设置keystore密码和key密码。(这个文件只需生成一次)

     

     生成的这个证书文件及密码一定要保存好,丢了的话,后面修改App后,再发布,已安装了旧版APP的用户就不能直接升级了,只能重新安装。

    查看证书信息

    keytool -list -v -keystore release-key.keystore

    然后输入口令,会显示此密钥文件中的相关信息,包括SHA1等

     

    打生产包

    ionic cordova build android --release

    成功的话会在以下位置生成apk文件

    ionic3(项目目录/platforms/android/build/outputs/apk/android-release-unsigned.apk)
    ionic4(项目目录platforms/android/app/build/outputs/apk/release/app-release-unsigned.apk)

    绑定密钥(证书)文件

    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore release-key.keystore apk/android-release-unsigned.apk alias_name

     

     

     

     

    说明:

    jarsigner

     工具名称
    -verbose  指的是将生成证书的详细信息打印出来,显示在dos窗口
     -keystore release-key.keystore   意思是签名所使用的数字证书的位置,没有写路径则表示在当前目录下
     apk/android-release-unsigned.apk  意思是apk所在的文件位置,注意apk的/符号指的是在名字为apk这个文件的里面,如果不指定目录默认为当前目录
    cordova-demo  指的是在生成签名的时候使用的别名
     -sigalg与-digestalg  密钥格式

     

     

     

    命令完成后这个APK就已经改变

    如果出现以下报错
    java.util.zip.ZipException: invalid entry compressed size (expected 13283 but got 12029 bytes)

    可以尝试在命令中加 -signedjar myname-singed.apk

    意思就是绑定签名后生成一个新的APK文件,后面myname-singed.apk是自己起的文件名。

    打包签名注意事项:

    打debug包时计算机会默认生成一个签名自动绑定debug包,所以debug包不可以再加手动签名,会导致冲突,但是不同的机器上面打出来的debug包生成的签名都会不同,无法覆盖安装,
    打release包时需要手动创建签名文件,随后将release包与签名绑定。没有签名文件的release包安装时会提示没有安全证书,无法安装apk包。在不同机器上打出来的release包只要是绑定的签名文件一致,就可以实现覆盖安装

    Align压缩优化

    zipalign -v 4 原apk文件 压缩后apk文件,例:

    zipalign -v 4 android-release-unsigned.apk MyExrApp.apk

    喜欢的话,请点赞,转发、收藏、评论,谢谢!
  • 相关阅读:
    设计模式 -- 中介者设计模式 (Mediator Pattern)
    java.lang.IllegalArgumentException: View not attached to window manager
    项目中处理android 6.0权限管理问题
    Python File.readlines() 方法
    notepad++快捷键
    ora-00054:resource busy and acquire with NOWAIT specified
    空格和TAB键混用错误:IndentationError: unindent does not match any outer indentation level
    Notepad++编辑Pyhton文件的自动缩进的问题(图文)
    echoawksed eecurl的使用-shell
    python正则表达式
  • 原文地址:https://www.cnblogs.com/johnjackson/p/12170097.html
Copyright © 2011-2022 走看看