Android Apk 签名

一:为什么要对Apk进行数字签名

开发者通过开发工具编译生成的应用程序以.apk命名,借助开发工具、第三方平台或adb命令将其安装到安卓手机上运行或更新。在安装的时候系统会检测apk是否被签名,如果没有签名则无法安装;为防止其他人通过使用相同的包名混淆替换已安装的程序,在发布的时候需要进行唯一的数字签名,保证每次版本的一致性。

debug版本的apk,使用系统默认的签名文件debug.keystore,别名= androiddebugkey,密码=android,安装运行时已经过签名

二:Apk签名方式

  • 使用AndroidStudio工具生成/引用签名文件

Build  -- Generate Signed APK  -- Create new key store

Key store path:签名文件存放的路径

Password:密钥库密码

Key  - Alias :别名

key  - Password :密钥密码(可以与密钥库密码一致)

.............................

创建完成后可以直接下一步进行选择版本进行签名(如果签名文件存在则忽略以上步骤直接进行下一步):

  • 使用工具自动生成signingConfigs中的签名信息

按步骤操作即可自动配置,无需手写

  • 命令行生成签名文件并打包带签名的apk文件

   在项目根目录下生成签名文件dd.jks

-genkeypair:指定生成数字签名;

-alias:指定生成数字签名的别名;

-keyalg:指定生成数字签名的算法。使用RSA算法。

-validity:指定生成数字签名的有效期;

-keystore:指定生成数字签名的存储路径。

使用命令行对Apk包签名,在根目录下生成签名的apk文件:

 -verbose:指定生成详细输出;

 -keystore:指定数字证书的存储路径;

 -signedjar:该选项的3个参数分别为签名后的APK包、未签名的APK包、数字证书的别名。

  • build.gradle中进行配置签名信息

除了可以用工具自己生成也可以在build.gradle中直接配置,配置信息如下:

可以看到,文件信息以明文的形式显示,为了避免将签名信息提交,可以在配置文件local.properties或gradle.properties中进行配置,区别是在gradle.properties中配置签名信息后,build.gradle中可以直接引用,而local或自定义的properties文件则需要读取并获取到签名信息,properties中的配置如下:

1:local.properties:

2:gradle.properties:

  • 读取环境变量中的签名信息,隐藏签名

签名文件信息配置到环境变量中,然后build.gradle中进行读取,windows10配置如下:

build.gradle中的引用,配置完成后重启下开发工具不然编译的时候找不到系统变量,通过System.getenv(变量名)获取:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值