对Android应用签名
Android使用包名作为唯一标识,当在同一台手机安装两个包名相同的应用,后安装的应用就会覆盖前面的应用(签名相同的情况下)。
签名有两个主要作用:
1.确定发布者身份。由于应用开发者可以通过使用相同的包名来替换已经安装的程序,因此使用签名可以避免发生这种情况。
2.确保应用的完整性。签名会对应用包中的每个文件进行处理,从而确保程序包中的文件不会被替换。
**在开发、调试阶段,AS会自动生成调试证书进行签名。当应用发布时,必须使用合适的数字证书对应用进行签名。
⒈使用AS对Android应用进行签名
1.单击AS主菜单中的Build => “Generate Signed Bundle / APK”

2.此时系统会提示你生成"Android App Bundel",还是生成“APK”,其中Android App Bundel时Google新推出的动态发布方案,这种发布方式的App更小、安装更快,但目前最大的问题时仅支持Google Play(Google应用商店),国内由于“谷歌服务不给力”的原因经常404,因此我们选择“APK”。

3.选择已有的还是新建,我们选择新建,“Create new ”


4.填写完成后选择“OK”后在新窗口中选择刚刚创建的数字证书。

5.单击“Next”按钮,在新的对话框中选择APK安装包的存储路径及签名版本,V1版本只对JAR包签名,V2版本对整个APK签名,建议选择V2版本。

6.选择“Finish”后签名完成。
⒉使用Android命令对APK签名
如果不想借助AS对Android应用进行签名或有时候需要对一个“未签名”的APK进行签名,则可通过"命令"对Android应用进行手动签名。
1.创建Key store库,使用JDK bin目录下的keytool.exe工具来生成数字证书。

keytool -genkeypair -alias Coreqi -keyalg RSA -validity 400 -keystore fanqi.jks
选项说明:
-genkeypair:指定生成数字证书
-alias:指定生成数字证书的别名
-keyalg:指定生成数字证书的算法。使用RSA算法
-validity:指定生成数字证书的有效期
-keystore:指定生成数字证书的存储路径
之后,输入证书的详细信息即可。

2.使用Android的apksigner.bat命令对未签名的APK安装包进行签名,apksigner.bat位于Android SDK的build-tools目录下。apksigner命令就是V2版本的签名(API29为V3)。

****
可以通过AS的Build =》 Build Bundle(s) / APK(s) =》 Build APK(s)来生成未签名的APK

在命令行窗口输入以下命令:
apksigner sign --ks C:\Users\fanqi\fanqi.jks --ks-key-alias Coreqi --out C:\Users\fanqi\app_sign.apk C:\Users\fanqi\AndroidStudioProjects\MyApplication\app\build\outputs\apk\debug\app-debug.apk
选项说明:
sign:指定使用apksigner命令执行签名
--ks:指定数字证书的存储路径
--ks-key-alias:指定数字证书的别名
--out 文件路径:指定签名后的APK文件路径及文件名
最后一个参数则代表未签名的APK文件
输入命令后回车输入数字证书的密码,如果签名成功,该命令不会有任何提示。
apksigner还提供了verify子命令来验证签名是否有效。
在命令行窗口输入以下命令对APK安装包的签名状态执行检查
apksigner verify -v C:\Users\fanqi\app_sign.apk

上面的输出提示用户,签名检查已经得到确定,其中V1版本的签名为false,V2版本的签名为false,V3版本的签名为true。
对Android应用签名的更多相关文章
- Android APK签名
一.为什么要签名? 开发Android的人这么多,完全有可能大家都把类名,包名起成了一个同样的名字,这时候如何区分?签名这时候就是起区分作用的. 由于开发商可能通过使用相同的Package Name来 ...
- Android APK 签名 (转发)
Cordova 3.5 为 Android APK 签名,生成可发布的 APK 程序文件 任侠 2014-06-07 00:04 移动开发 抢沙发 16,288 views 目录 [隐藏] ...
- Android APK 签名比对(转)
Android apk签名的过程 1. 生成MANIFEST.MF文件: 程序遍历update.apk包中的所有文件(entry),对非文件夹非签名文件的文件,逐个生成SHA1的数字签名信息,再用Ba ...
- Android App签名打包 与 SDK开发文档
Android App签名打包签名的意义1.为了保证每个程序开发者的合法权益2.放置部分人通过使用相同的Package Name来混淆替换已经安装的程序,从而出现一些恶意篡改3.保证我们每次发布的版本 ...
- android 系统签名【转】
本文转载自:http://blog.csdn.net/csh86277516/article/details/73549824 Android——编译release版签名系统 AndroidManif ...
- cordova打包之android应用签名
原文:cordova打包之android应用签名 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/mate_ge/article/details/78 ...
- Android平台签名证书(.keystore)生成指南
来源:https://ask.dcloud.net.cn/article/35777 Android平台签名证书(.keystore)生成指南 分类:HTML5+ Android证书 Android平 ...
- Android apk签名详解——AS签名、获取签名信息、系统签名、命令行签名
Apk签名,每一个Android开发者都不陌生.它就是对我们的apk加了一个校验参数,防止apk被掉包.一开始做Android开发,就接触到了apk签名:后来在微信开放平台.高德地图等平台注册时,需要 ...
- Android手动签名
在生成release build时可实现自动签名,所谓手动签名,就是在命令行下完成签名,落实到Android Studio里面,就是在terminal里面做. 下面是三个命令,第一个签名,第二个验证, ...
- Android应用签名
http://www.cnblogs.com/ghj1976/archive/2011/07/18/2109381.html 为了要签名? 开发Android的人这么多,完全有可能大家都把类名,包名起 ...
随机推荐
- DbFunctions 作为 LINQ to Entities 查询的一部分使用时,此方法调用规范 CreateDateTime EDM 函数以创建新的 DateTime 对象。
DbFunctions.CreateDateTime CreateDateTime(year, month,day,hour,minute,second)
- response 下载文件火狐浏览器文件名乱码问题
string path = Server.MapPath(Url.Content("~/") + "UploadFiles/Template/"); ...
- CF427D
CF427D SA的奇技淫巧,其实就是板子. 题意: 给定两个字符串,求最短的满足各只出现一次的连续公共字串 解析: 一般情况下,SA都是用来求最长公共前缀的,好像和这道题所求的最短公共子串没有任何关 ...
- MyBatis动态Sql 的使用
Mapper.xml提示: 1:mapper包中新建一个文件:mybatis-3-mapper.dtd 2:在web app libraries/mybatis.jar/org.apache.ibat ...
- 深入解析 composer 的自动加载原理
PHP 自5.3的版本之后,已经重焕新生,命名空间.性状(trait).闭包.接口.PSR 规范.以及 composer 的出现已经让 PHP 变成了一门现代化的脚本语言.PHP 的生态系统也一直在演 ...
- php多线程的概念
来源:http://www.cnblogs.com/zhenbianshu/p/7978835.html 多线程 线程 首先说下线程: 线程(thread) 是操作系统能够进行运算调度的最小单位.它被 ...
- Android蓝牙开发技术学习总结
Android开发,提供对蓝牙的通讯栈的支持,允许设别和其他的设备进行无线传输数据.应用程序层通过安卓API来调用蓝牙的相关功能,这些API使程序无线连接到蓝牙设备,并拥有P2P或者多端无线连接的特性 ...
- ObjectAnimator属性动画示例代码
import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.app.Ac ...
- xshell链接vbox 上 nat 方式链接虚拟机 - 端口转发
使用场景 某些不可解原因导致 centos7通过桥接方式进行外网资源访问无法实现, 但是 nat 方式是没问题的, 因此考虑直接基于这个的方式进行操作, 但是xshell 的链接需要ip地址, 因此提 ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_汇总
2018年Spring Boot 2.x整合微信支付在线教育网站高级项目实战视频课程 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-1.SpringBoot整合微信支付开发在 ...