Android apk 使用多个签名的问题
Android apk 使用多个签名的问题
发布时间:2018-02-01 来源:查字典编辑
摘要:今天在押解APK包的时候,发现一个apk包的签名文件中有2个签名,于是就尝试了一下使用jarsigner命令确实可以使用不同的签名文件对ap...

今天在押解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

回复讨论(解决方案)

要做apk覆盖要求的是 同包名,同签名

为什么要有签名,这个其实稍微动点歪脑筋就能推测出来,邪恶的我就想过这个问题,我给题主打个比方:

题主开发了一个应用,叫做嘿嘿嘿,包名是com.nb.heiheihei,签名是你保存的xxx.keystore

某一天,嘿嘿嘿火了,我看到了

我照着这个应用也开发了一个版本,也叫嘿嘿嘿,包名也起做com.nb.heiheihei,那么重点就来了,要是不需要签名,那么我把应用发上应用平台,用户一下,一装,ok,题主的嘿嘿嘿被我的嘿嘿嘿覆盖了,不是黄段子。。。( ̄ε(# ̄)☆╰╮( ̄▽ ̄///)

瞎扯了一堆,总结来说,签名就是保证你开发的应用的唯一性的,保证你应用安全的。

                              ——致  图样图森破的题主 要做apk覆盖要求的是 同包名,同签名

为什么要有签名,这个其实稍微动点歪脑筋就能推测出来,邪恶的我就想过这个问题,我给题主打个比方:

题主开发了一个应用,叫做嘿嘿嘿,包名是com.nb.heiheihei,签名是你保存的xxx.keystore

某一天,嘿嘿嘿火了,我看到了

我照着这个应用也开发了一个版本,也叫嘿嘿嘿,包名也起做com.nb.heiheihei,那么重点就来了,要是不需要签名,那么我把应用发上应用平台,用户一下,一装,ok,题主的嘿嘿嘿被我的嘿嘿嘿覆盖了,不是黄段子。。。( ̄ε(# ̄)☆╰╮( ̄▽ ̄///)

瞎扯了一堆,总结来说,签名就是保证你开发的应用的唯一性的,保证你应用安全的。

                              ——致  图样图森破的题主

谢谢你的回复,我关注的核心是一个应用存在多个签名的意义,而不是一个签名

要做apk覆盖要求的是 同包名,同签名

为什么要有签名,这个其实稍微动点歪脑筋就能推测出来,邪恶的我就想过这个问题,我给题主打个比方:

题主开发了一个应用,叫做嘿嘿嘿,包名是com.nb.heiheihei,签名是你保存的xxx.keystore

某一天,嘿嘿嘿火了,我看到了

我照着这个应用也开发了一个版本,也叫嘿嘿嘿,包名也起做com.nb.heiheihei,那么重点就来了,要是不需要签名,那么我把应用发上应用平台,用户一下,一装,ok,题主的嘿嘿嘿被我的嘿嘿嘿覆盖了,不是黄段子。。。( ̄ε(# ̄)☆╰╮( ̄▽ ̄///)

瞎扯了一堆,总结来说,签名就是保证你开发的应用的唯一性的,保证你应用安全的。

                              ——致  图样图森破的题主

谢谢你的回复,我关注的核心是一个应用存在多个签名的意义,而不是一个签名

多签名可能是特殊的渠道版本,为了方便统计量或者啥的.... 你有试过单独使用第二个签名的apk与使用两个签名的apk是否可以覆盖吗?

PS:没有试验过,尝试一下的话,可以验证一下是否第二个签名会覆盖第一个签名。 比如: 有两个开发者做了一款应用, 这款应用后来火了 ,  利益划分的下,要怎么保证双方牵制呢?那就是双重签名

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新安卓软件开发学习
热门安卓软件开发学习
编程开发子分类