为什么Android允许安装证书过期的APK?

为什么Android允许安装证书过期的APK?,android,certificate,apk,demo,trial,Android,Certificate,Apk,Demo,Trial,我用有效期为1天的证书签署了APK。我的目标是给一些人一个试用应用程序,但防止他们在过期后复制应用程序。如果他们在到期日之前复制应用程序,这是可以的。我认为Android操作系统会阻止任何证书过期的应用程序安装在手机上。但是,我发现我可以在签名证书过期2天后在手机上安装该应用程序。Jarsigner确认证书已过期。为什么Android允许应用程序安装证书过期 据我所知,开发者可以通过adb或第三方安装。我相信如果你把它上传到市场上,你会发现困难。依我看,这是合乎逻辑的,因为当你从市场上安装应用程

我用有效期为1天的证书签署了APK。我的目标是给一些人一个试用应用程序,但防止他们在过期后复制应用程序。如果他们在到期日之前复制应用程序,这是可以的。我认为Android操作系统会阻止任何证书过期的应用程序安装在手机上。但是,我发现我可以在签名证书过期2天后在手机上安装该应用程序。Jarsigner确认证书已过期。为什么Android允许应用程序安装证书过期

据我所知,开发者可以通过adb或第三方安装。我相信如果你把它上传到市场上,你会发现困难。依我看,这是合乎逻辑的,因为当你从市场上安装应用程序时,你会承担许多风险,而这些风险是用正确签名的应用程序无法解决的。

这很有趣。但一般来说,人们会进行有时间限制的试用,但会在应用程序中添加代码,使其拒绝在给定日期后运行,而不是希望操作系统在该日期后拒绝安装。是否特别要限制安装日期而不是运行日期?如果是这样,您可以在到期前安装时在私人设置和/或SD卡中创建授权记录-每个都有不同的可清除/重新安装生存问题。是的,我不想限制运行日期,该应用程序应该完全可供我提供给它的人使用,但不应重新安装。我很困惑,因为Android指南告诉我系统会在安装时测试证书的过期日期,但事实似乎并非如此。也许我可以像你建议的那样自己做这项工作,但我想知道为什么不检查证书。你很可能发现了一个bug(或者测试中有一些微妙的错误)。但是要实现你的目标,依靠你自己实现的东西可能更有效。一个(可能是缓存的)运行授权方案也不需要依赖于日期——它可以绑定到您将在某个服务器上创建的用户帐户。顺便说一句,请注意,如果重新签署apk,您的原始方案即使有效,也可能会失败。请检查一下——您正在使用内置于发布模式的应用程序进行测试,不是吗?而且您没有使用adb push将apk推送到手机上?重新签名并不特别困难,您只需了解如何使用命令行工具即可。从根本上说,由于证书是自生成的,因此手机无法看到您的证书与其他人的证书相比有任何特殊之处——它只能强制执行两个声称由同一实体签名的证书,以便可以检查更新或共享用户id方案(包括系统应用程序)是否与现有安装的证书一致。