apk签名

android签名机制(1)——了解签名

醉酒当歌 提交于 2019-11-27 09:55:36
android中所有运行在设备上的应用都必须要签名,这是系统提供的一种安全认证机制。 下面以问答形式来自我认识下,后面在根据部分内容来进一步研究: 1.为什么用签名机制?如果不签名呢? 为了防止app被反编译替换原有的程序,如果有相同包名的应用存在,新的apk则不能安装在设备上。 就算被反编译,在没有原有私钥的情况,重新签名生成的apk和原来的apk的标志是不同的。如此,被修改的apk如果安装在原来的设备上,则会提示: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES] 如果不签名呢? 直接安装到设备上,则也提示: 从上面可以有个很简易的认知,如果不签名或者签名不对,则不能安装在设备上。 如果应用androidmenifast.xml中加了 android:sharedUserId="android.uid.system" 时,要用平台签名,否则提示 : 更多安装异常可以查找相关信息。 2.平台签名?签名有很多种么? 有很多种。在android源码目录build\target\product\security,有如下几种签名密钥。 *.pk8表示的是private key---私钥 *.x509.pem理解为公钥 这里的platform.*即为平台签名的私钥和公钥,加密方式是非对称加密。 从上图可以看出有好几种的签名