我正在检查彼此的包签名,以确定它们是否不兼容(针对不同的密钥库进行编译).我注意到这PackageInfo.signatures
几乎总是一个包含单个条目的集合,这对我来说很有意义.我使用调试或生产密钥库构建我的应用程序,这确定了包的签名(这是我对此处的apk签名过程的简单理解).我知道如果我没有特别要求提供这些信息(通过传递PackageManager.GET_SIGNATURES
旗帜),这将是null ,但我不太了解会有不止一个的情况.
我写了一些调试代码并在我的个人Android手机上运行.在手机上安装的300多个软件包中,除了一些似乎来自我的服务提供商(com.verizon.*名称空间)的软件包之外,一切都只有一个签名.
我觉得我的用例(包管理)可以考虑应用程序包将只有一个签名,但我想确保我没有遗漏可能引入边缘案例错误的东西.
Eri*_*ric 14
出于您的目的,假设Android应用程序具有单个签名似乎完全可以接受.Android APK 可以使用多个签名进行编译,但既不推荐也不经过广泛测试.(为什么Verizon会这样做?谁知道呢.)
我从Android开发的首席女士Dianne Hackborn那里找到了这个档案:
问:我知道jar签名者在一个jar文件中支持多个签名.如果APK文件有两个有效签名,这是否意味着此APK可以访问签名者提供的签名级别权限?
答:从理论上讲,有些东西是用多个签名完成的,但是没有人用过这个,所以它可能不起作用.这也有副作用(如果它确实有效)将两个签名别名化为同一个东西,因为它们可能来自同一个所有者,这可能不是你想要的.
来自Dianne的另一点(请注意使用"it",而不是"他们"和"证书"而不是"证书"):
问:PackageInfo.signatures:它返回什么?
答:这是用于签署.apk的证书.
然而.值得注意的是,我在Android源Git:Test for Checking Package Signatures(Bug 4596332)中找到了对多个签名的测试参考.此外,Android BackupManagerService
代码(和其他Android源代码)可确保它检查多个签名.
因此,我的结论是:您不必担心多个签名,除非您在特定包的安全性和编译很重要的情况下进行编码.(但是,如果有必要,似乎你也不会有很多问题需要容纳多个签名.)
希望至少在某种程度上令人满意.
归档时间: |
|
查看次数: |
1931 次 |
最近记录: |