何时从服务器返回LICENSED_OLD_KEY?

Ted*_*opp 6 code-signing license-key android-lvl google-play

应用程序许可文档描述LICENSED_OLD_KEY为:

该应用程序已获得用户许可,但有一个更新的应用程序版本可用不同的密钥签名.

另一方面,签署策略文档说:

如果在不使用匹配证书的情况下签署新版本,则还需要为应用程序分配不同的包名称 - 在这种情况下,用户将新版本安装为全新的应用程序.

由于应用程序由其包名称标识,因此这似乎表示您无法更改已发布应用程序的签名密钥.(相反,您可以更改密钥和包,但随后它将被市场视为新的应用程序.)

我想不出可以收到LICENSED_OLD_KEY回复的情况.我错过了什么吗?

dra*_*oot 3

文档指出LICENSED_OLD_KEY

...可能表明已安装的应用程序版本使用的密钥对无效或已被泄露。

看起来此代码是针对私钥泄露或不再受信任的情况添加的。由于当前的 IPC 机制甚至不知道客户端使用哪个公钥,我猜测整个包名称都会被污染。这个想法是,在这种情况下,应用程序应该要求用户升级到未受污染并且应该已经存在的新版本。由于此升级需要切换到全新的不同软件包,因此尚不清楚如何完成此操作。我的猜测是,目前这种机制根本没有被真正使用,因此获得此代码的机会非常接近于零。在官方 LVL 库的当前版本中,此代码的处理方式与正常LICENSED响应相同。

ps 另请注意,您混淆了用于签署应用程序的密钥对和用于 LVL 服务的密钥对。这两者是完全不同且无关的。有趣的是,对于后一个密钥对,您甚至根本不知道私钥。您可以从发布商控制台获取自己的预生成公钥(每个开发人员一个),这就是您所获得的全部。