1.任何一个apk的运行都需要一个签名, 测试和开发阶段,开发工具会自动生成一个debug key来为应用签名;当应用要发布的时候,需要一个release key来为应用签名。
2.为什么要给Android应用程序签名?
这样做的根本原因是Android系统需要一个机制,保证以下几点:
1). 拿到一个应用的安装包,能够知道作者是谁
2). 当应用更新时,能够检测是不是作者本人提交的
3). 应用中的部分文件遭到修改时,能够检测到是否为作者本人做出的修改为了实现上述目的,Android就引入了签名这种比较成熟 的方法。
3.怎么生成签名证书以及怎么给应用程序签名
1).下载jdk,并且配置环境变量
2).执行命令,生成签名(数字证书)
keytool -genkey -v -keystore liufeng.keystore -alias liufeng.keystore -keyalg RSA -validity 20000
keytool是工具名称,-genkey意味着执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来,显示在dos窗口中;
-keystore liufeng.keystore 表示生成的数字证书的文件名为“liufeng.keystore”;
-alias liufeng.keystore 表示证书的别名为“liufeng.keystore”,当然可以不和上面的文件名一样;
-keyalg RSA 表示生成密钥文件所采用的算法为RSA;
-validity 20000 表示该数字证书的有效期为20000天,意味着20000天之后该证书将失效
在执行此命令的时候,会在控制台提示输入一些信息,比如keystore的密码,用户名,公司名称,省市,国家等
image.png
liufeng.keystore签名文件会默认生成到用户文件夹里,比如存在C:\Users\stone文件夹里
3).给应用程序签名
方式一:使用android studio给应用程序签名
打开build->Generate signed APK
image.png
打开之后会出现如下对话框:
image.png
点击Choose existing...按钮,选择刚才生成的签名证书,然后手动输入Key store password 和 Key password,点击next按钮。然后会出现如下对话框
image.png勾选V1和V2,点击Finish按钮,即可生成签名过的release包。根据对话框可知,生成的包存放到了d盘
当然我们也可以修改存储路径。
V1和V2其实这是从 Android 7.0引入的一个新的签名机制,它为APK附加了一些特性使其更具安全性,所以这个选项虽然不是强制性的,但最好两个都选
方式二:使用jdk命令给应用程序签名
生成未签名的apk包
点击Android studio右边的Gradle按钮,然后再点击build文件夹里的assemble按钮,即可生成一个未签名包
它会自动生成到app/build/outputs/apk文件夹里
image.png
然后我们把它移到用户的根目录里
image.png然后执行命令
jarsigner -verbose -keystore liufeng.keystore -signedjar release.apk app-release-unsigned.apk liufeng.keystore
说明:
jarsigner是工具名称,-verbose表示将签名过程中的详细信息打印出来,显示在dos窗口中;
-keystore liufeng.keystore 表示签名所使用的数字证书所在位置,这里没有写路径,表示在当前目录下;
-signedjar release.apk app-release-unsigned.apk 表示给app-release-unsigned.apk文件签名,签名后的文件名称为release.apk;
-liufeng.keystore(最后面的)表示证书的别名,对应于生成数字证书时-alias参数后面的名称;
这样就会在用户根目录中生成一个签名后的安装包release.apk
网友评论