有很多关于已签名和未签名的.apk文件的问题。对于测试&调试我们可以使用bin文件夹内生成的unsigned .apk文件。这个apk文件使用虚拟密钥库文件生成。我的问题是为什么我们需要使用签名的apk。我们不能发布一个未签名的apk。这有什么不对?
答案 0 :(得分:9)
您希望获得已签名的应用程序的原因有很多。关于它,甚至还有一个great article。原因如下:
基本上,它会让黑客的生活变得更加困难,这总是一件好事。
例如,有人可能会向用户提供访问Google Play帐户的权限以修改说明,但您不希望他们上传新应用。没有密钥,他们无法上传应用程序。此外,如果您的Google密码被破解,您仍然无法上传该应用。需要使用私钥文件和密钥才能破解它。
答案 1 :(得分:3)
由于@Pearson几乎涵盖了所有的事情,但我想介绍一件事。
在Android中,您无法在开发人员手机/模拟器上的任何内容中安装未签名的应用程序。您必须通过调试或自己的证书对您的应用程序进行签名。
安装后,Android SDK会在名为debug.keystore的密钥库中为您生成“调试”签名证书。调试证书仅在365天内有效。
因此,当您通过任何IDE Eclipse / Android Studio安装应用程序时,IDE也会使用调试证书对应用程序进行签名。
我的问题是为什么我们需要使用签名的apk。我们不能发布一个未签名的apk。这有什么不对?
您需要使用自己的发布密钥库证书对应用进行签名,因为您无法发布使用调试证书签名的应用,因为
一个原因是您的调试证书在一年内到期,因此您无法发布应用程序的更新一旦您的调试证书过期,为什么还会导致Google不允许以及一些更重要的安全问题。
第二个原因是android系统使用证书作为识别应用程序作者和在应用程序之间建立信任关系的手段。
答案 2 :(得分:2)
只有在开发者选项中启用调试功能的人才能运行它。人们需要知道如何启用开发人员选项(通过在电话设置中单击“内部编号”七次)。谷歌不会让你发布调试apk,所以人们将不得不侧载它。
答案 3 :(得分:1)
带调试密钥库的Apk是签名的apk。 Unsigned apk无法上传到设备。对于生产,您必须创建一个不同的密钥库来进行签名。此外,一旦发布,将来必须使用相同的密钥库进行更新。如果密钥库丢失,则无法更新应用程序。
答案 4 :(得分:1)
未签名的APK很难追溯到原作者。虽然原则上没有任何问题,但Google强制您在发布Google Play之前签署您的APK。因此,当开发人员滥用Google Play发布软件时,Google有权撤销证书,即。恶意软件。
此外,由于您必须向Google支付证书费用,因此Google希望恶意开发人员不会一次又一次地支付费用来发布该应用程序。
答案 5 :(得分:1)
来自Android开发者:
“Android系统要求所有已安装的应用程序都使用其私钥由应用程序开发人员持有的证书进行数字签名.Android系统使用证书作为识别应用程序作者和在应用程序之间建立信任关系的方法” ...
阅读所有相关内容here