APK签名

911 阅读2分钟
  1. 查看 keystore

    从Java 9开始,keytool命令默认不再生成MD5证书指纹, 可以使用 apksigner

     keytool -list -v -keystore debug.keystore
     
     apksigner verify --print-certs your.apk
    
  2. 查看三方应用或是系统应用签名

    winrar打开待查看的apk,将其中META-INF文件夹解压出来,得到其中的CERT.RSA文件

    keytool -printcert -file META-INF/CERT.RSA
    
  3. 给Apk签名

    • jarsigner

      jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkIn] [alias]
      

      jarsigner命令格式:-verbose输出详细信息 -keystore密钥库位置 -signedjar要生成的文件 要签名的文件 密钥库文件

      • keystorePath--参数代表keyStore的绝对路径,如D:\keystore
      • apkOut--参数代表签名后的apk路径,如D:\signed.apk
      • apkOut--参数代表签名后的apk路径,如D:\signed.apk
      • apkin--参数代表在腾讯应用中心下载的未签名apk,默认名称为tap_unsign.apk
      • alias--参数代表签名用的alias名称(创建keyStore时所填写),如timdong
      jarsigner -verbose -keystore debug.keystore -signedjar test2.apk tap_unsign1.apk timdong
      
    • apksigner (推荐)

      # 查看签名帮助
      apksigner sign -h
      
      # 如果你不使用 `--in` 指定要签名的输入文件 input.apk, 那么 input.apk 必须在所有参数之后
      apksigner sign --keystore release.jks input.apk
      # 如果未使用 `--out` 指定输出文件, input.apk 会被输出文件直接覆盖
      apksigner sign --ks release.jks input.apk
      
      apksigner sign --ks release.jks --ks-key-alias systemkey sign.apk
      
      # pass:123456 可以使用环境变化代替: env:<ENV_NAME>
      apksigner sign --ks E:\Tmp\jw.jks --ks-key-alias xxx --ks-pass pass:123456 --v3-signing-enabled true --in E:\Tmp\unsigned.apk --out E:\Tmp\out-signed.apk
      
      apksigner sign --key release.pk8 --cert release.x509.pem --key-pas pass:12345 app.apk
      
      • 使用 --ks 选项指定密钥库文件。
  4. 系统签名

    用Android提供的Signapk工具来签名,signapk的源代码是在"build/tools/signapk"下

    java -jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk
    
    # 使用私钥和证书签名:--key key.pk8 --cert cert.x509.pem
    apksigner sign --key release.pk8 --cert release.x509.pem input.apk output.apk
    
    • 使用 --key 和 --cert 选项分别指定私钥文件和证书文件。私钥文件必须使用 PKCS #8 格式,证书文件必须使用 X.509 格式。
  5. apk打包时的系统签名

    github.com/getfatday/k…

    之后就可以作为普通的签名证书使用,打好包即为系统签名

    ./keytool-importkeypair -k ./tg.jks -p myPassword -pk8 platform.pk8 -cert platform.x509.pem -alias myAlias