应用签名的主要作用有两个,第一个是检验安装包是否被修改,第二个是用于确认签名者的身份。
签名时需要一个密钥文件,同一个密钥文件签名出来的 apk,它的签名身份信息是一样的,使用不同的密钥文件的话,签名身份信息自然不一样。并且除非你能拿到开发者的密钥文件,不然只靠签名信息文件,你是很难在修改过的 apk 文件上伪造出原签名身份信息的。
当我们修改了一个 apk 后,不重新签名,直接安装的话你会发现无法安装(除非你修改了系统),为什么呢?其实就是因为上面提到的签名第一个作用,系统根据原有的签名检测到 apk 被修改了,于是拒绝安装。
但是你可能会问,重新签名不就可以安装了,那签名又有什么意义?这就是签名的第二个作用了,用于确认签名者的身份。
在第一次安装 apk 时,系统压根不知道这个应用的作者是谁,所以它只能检验安装包是否被修改。但是,如果系统已经安装了这个应用,当你覆盖安装时,系统会把已安装和正在安装的 apk 的签名者信息进行对比,如果不一致,也会拒绝安装。
要解决这个问题很简单,把已安装的应用卸载了,然后就可以安装我们重新签名的应用了。
安装 apk 时,签名的作用到这里大概就结束了。是否觉得签名好像依然没什么意义?其实不是。
首先应用可能会在启动时检测它的签名身份信息,如果发现被改了,就直接退出,这就是我们所说的签名校验。
另外一个就是,假设你做了一个十分流行的软件,但被别人修改了并植入木马,造成了非常大的影响,如果警察找上门怎么办?很简单,只要把官方版和木马版的签名身份进行对比,就可以证明你的清白了。
上面啰嗦了这么多,现在说说怎么用 MT 对 apk 进行签名。其实很简单,点击要签名的 apk,点功能,就可以看到 APK 签名,点击后选择你要使用的签名密钥,就可以开始签名了。
每当你修改了 apk 内的任意一个文件后,如果要安装它,都必须先进行签名然后才能安装。
如果系统已经安装了这个应用,而且已安装的应用的签名身份和你重新签名的身份不一致,需要先卸载掉已安装的应用后才能成功安装。
使用 MT 安装 apk 前,MT 会先对 apk 的签名信息进行验证,如果验证失败,会自动提示你需要先签名或者先卸载已安装的应用,这一步骤在性能较差的手机上可能会比较费时间,你可以在设置中关掉 APK 安装验证来提高速度。
一般我们签名 apk 需要一个密钥文件,这个文件的后缀是 .jks 或者 .keystore,你可以网上搜索专门的软件来生成它。在使用密钥文件进行签名时,需要正确输入主密码、别名、别名密码后才能签名。
但使用 MT 签名的话不需要这么麻烦,MT 中自带了一个默认密钥,你可以直接用它进行签名,不需要输入密码。当然你也可以导入自己的密钥文件,不过需要开通 VIP 会员。
使用 MT 直接点击 .jks 或者 .keystore 文件,然后在弹出的对话框中正确输入主密码、别名、别名密码,就可以导入到 MT 的密钥库中,下次签名时就可以看到你导入的密钥了。
如果你觉得不输入密码直接签名安全性有点低,你可以在导入的第二个步骤中设置一个密码,然后使用 MT 签名时就需要输入这个密码。
当然最大的安全保障还是不要让你的密钥文件泄漏出去。
导入的签名都会保存到“内置存储/MT2/keys”文件夹中,如果你要重命名或删除你导入的签名,去这个文件夹中操作即可。