有很多关于签名和未签名的 .apk 文件的问题。为了测试和调试,我们可以使用在 bin 文件夹内生成的未签名 .apk 文件。这个 apk 文件是使用虚拟密钥库文件生成的。我的问题是,为什么我们需要使用签名的 apk 文件。难道我们不能发布一个未签名的 apk 文件吗?那样会有什么问题吗?
有很多关于签名和未签名的 .apk 文件的问题。为了测试和调试,我们可以使用在 bin 文件夹内生成的未签名 .apk 文件。这个 apk 文件是使用虚拟密钥库文件生成的。我的问题是,为什么我们需要使用签名的 apk 文件。难道我们不能发布一个未签名的 apk 文件吗?那样会有什么问题吗?
基本上,它使黑客的生活更加困难,这总是一件好事。
例如,您可能会将Google Play账户授权让别人修改描述,但您不希望他们上传新应用程序。没有密钥,他们无法上传应用程序。此外,即使您的谷歌密码被破解,您仍然无法上传应用程序。这需要拥有您的私钥文件和密钥来破解。
虽然@Pearson已经介绍了几乎所有的事情,但我想补充一点。
在Android上,您无法以任何方式在开发人员手机/模拟器上安装未签名的应用程序。您必须使用调试或自己的证书签署应用程序。
安装时,Android SDK会在名为debug.keystore的密钥库中为您生成一个“调试”签名证书。调试证书仅有效期为365天。
因此,当您通过任何IDE Eclipse / Android Studio安装应用程序时,IDE也会使用调试证书对应用程序进行签名。
我的问题是为什么我们需要使用已签名的apk。我们不能发布未签名的apk吗?这有什么问题吗?
您需要使用自己的发布密钥库证书签名应用程序,因为您无法发布使用调试证书签名的应用程序,原因有:
首先,调试证书在一年内到期,因此过期后您将无法发布应用程序的更新,这也是Google不允许的另一个重要安全问题。
第二个原因是Android系统使用证书作为识别应用程序作者和建立应用程序之间信任关系的手段。
只有在开发者选项中启用了调试功能的人才能运行它。而且人们需要知道如何启用开发者选项(通过在手机设置中点击“版本号”七次)。Google不允许发布调试APK,因此人们必须侧载它。
使用调试密钥库的Apk是已签名的Apk。未签名的Apk无法上传到设备。对于生产,您必须创建一个不同的密钥库进行签名。此外,一旦发布,未来的更新必须使用相同的密钥库完成。如果密钥库丢失,则无法更新应用程序。
来自Android开发者:
"Android系统要求所有安装的应用程序都使用应用程序开发人员持有的证书进行数字签名。 Android系统使用该证书作为识别应用程序作者和建立应用程序之间信任关系的手段"...
在这里阅读更多信息。