Android apk 使用多个签名的问题

FinalObject 2016-03-17 05:34:30
今天在押解APK包的时候,发现一个apk包的签名文件中有2个签名,于是就尝试了一下

使用jarsigner 命令确实可以使用不同的签名文件对apk进行多次签名,使用代码解析apk包的签名信息确实是有多个签名,测试代码如下:

String path = "/mnt/sdcard/First_double.apk";
PackageInfo pi = context.getPackageManager().getPackageArchiveInfo(path, PackageManager.GET_SIGNATURES);
Log.e(TAG, "sign size:"+pi.signatures.length);
for (int i = 0; i < pi.signatures.length; i++)
{
Log.e(TAG, "index:"+i+","+pi.signatures[i].toCharsString());
}

分别单独安装,也是可以正常使用的,但是发现一个问题,这两个apk(一个使用一个签名,一个使用2个签名,其他的完全一致)是无法相互覆盖安装的,返回签名不一致的异常。

我的疑问是,如果这两个APK不能相互覆盖安装,那么多签名存在的意义到底是什么呢?
不知道哪位大神可以解惑,谢谢。
PS:使用的测试手机 是荣耀7,p7
...全文
1942 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangfeng* 2018-05-30
  • 打赏
  • 举报
回复
多个签名为了限定 apk不同的权限和应用场景,
戰_ 2017-06-20
  • 打赏
  • 举报
回复
比如: 有两个开发者做了一款应用, 这款应用后来火了 , 利益划分的下,要怎么保证双方牵制呢?那就是双重签名
xuenhong123 2016-06-13
  • 打赏
  • 举报
回复
你有试过单独使用第二个签名的apk与使用两个签名的apk是否可以覆盖吗? PS:没有试验过,尝试一下的话,可以验证一下是否第二个签名会覆盖第一个签名。
qq_26763799 2016-05-18
  • 打赏
  • 举报
回复
引用 2 楼 s402178946 的回复:
[quote=引用 1 楼 baidu_20596139 的回复:] 要做apk覆盖要求的是同包名,同签名 为什么要有签名,这个其实稍微动点歪脑筋就能推测出来,邪恶的我就想过这个问题,我给题主打个比方: 题主开发了一个应用,叫做嘿嘿嘿,包名是com.nb.heiheihei,签名是你保存的xxx.keystore 某一天,嘿嘿嘿火了,我看到了 我照着这个应用也开发了一个版本,也叫嘿嘿嘿,包名也起做com.nb.heiheihei,那么重点就来了,要是不需要签名,那么我把应用发上应用平台,用户一下,一装,ok,题主的嘿嘿嘿被我的嘿嘿嘿覆盖了,不是黄段子。。。( ̄ε(# ̄)☆╰╮( ̄▽ ̄///) 瞎扯了一堆,总结来说,签名就是保证你开发的应用的唯一性的,保证你应用安全的。 ——致 图样图森破的题主
谢谢你的回复,我关注的核心是一个应用存在多个签名的意义,而不是一个签名[/quote] 多签名可能是特殊的渠道版本,为了方便统计量或者啥的....
FinalObject 2016-05-18
  • 打赏
  • 举报
回复
引用 1 楼 baidu_20596139 的回复:
要做apk覆盖要求的是同包名,同签名 为什么要有签名,这个其实稍微动点歪脑筋就能推测出来,邪恶的我就想过这个问题,我给题主打个比方: 题主开发了一个应用,叫做嘿嘿嘿,包名是com.nb.heiheihei,签名是你保存的xxx.keystore 某一天,嘿嘿嘿火了,我看到了 我照着这个应用也开发了一个版本,也叫嘿嘿嘿,包名也起做com.nb.heiheihei,那么重点就来了,要是不需要签名,那么我把应用发上应用平台,用户一下,一装,ok,题主的嘿嘿嘿被我的嘿嘿嘿覆盖了,不是黄段子。。。( ̄ε(# ̄)☆╰╮( ̄▽ ̄///) 瞎扯了一堆,总结来说,签名就是保证你开发的应用的唯一性的,保证你应用安全的。 ——致 图样图森破的题主
谢谢你的回复,我关注的核心是一个应用存在多个签名的意义,而不是一个签名
马也程序猴 2016-03-19
  • 打赏
  • 举报
回复
要做apk覆盖要求的是同包名,同签名 为什么要有签名,这个其实稍微动点歪脑筋就能推测出来,邪恶的我就想过这个问题,我给题主打个比方: 题主开发了一个应用,叫做嘿嘿嘿,包名是com.nb.heiheihei,签名是你保存的xxx.keystore 某一天,嘿嘿嘿火了,我看到了 我照着这个应用也开发了一个版本,也叫嘿嘿嘿,包名也起做com.nb.heiheihei,那么重点就来了,要是不需要签名,那么我把应用发上应用平台,用户一下,一装,ok,题主的嘿嘿嘿被我的嘿嘿嘿覆盖了,不是黄段子。。。( ̄ε(# ̄)☆╰╮( ̄▽ ̄///) 瞎扯了一堆,总结来说,签名就是保证你开发的应用的唯一性的,保证你应用安全的。 ——致 图样图森破的题主

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧