不同类型的APK

Different types of APK

谁能解释一下两者之间的区别:

虽然很明显,签名的apk是用自己的证书生​​成的apk,未签名的apk没有证书。

特别是debug模式下的apk和release模式下的apk到底是什么意思?

这两个与签名apk和未签名apk有什么关系?

已编辑:除此之外还有其他类型的apk吗?

我已经阅读了 http://developer.android.com/tools/publishing/app-signing.html

中的文档

它只解释了在调试模式下签名在发布模式下签名,但他们没有提到任何关于 apk 的内容在调试模式下,apk 在发布模式下。

来自 Android 文档:

You can sign an app in debug or release mode. You sign your app in debug mode during development and in release mode when you are ready to distribute your app. The Android SDK generates a certificate to sign apps in debug mode. To sign apps in release mode, you need to generate your own certificate.

也就是说,当您要分发您的应用程序时,您可以使用您自己的密钥库文件在发布模式下对您的应用程序进行签名。在调试模式下登录通常由您的 IDE.

自动完成

要将任何 apk 安装到必须签名的任何设备,未签名的 apk 只能在模拟器中进行测试。签名时,您可以通过多种方式完成,这是 developer.android.com 的摘录 http://developer.android.com/tools/publishing/app-signing.html

签名概述 您可以在调试或发布模式下签署应用程序。您在开发期间以调试模式签署您的应用程序,并在您准备好分发您的应用程序时以发布模式签署您的应用程序。 Android SDK 生成证书以在调试模式下签署应用程序。要在发布模式下签署应用程序,您需要生成自己的证书。

在调试模式下签名

在调试模式下,您可以使用 Android SDK 工具生成的调试证书对您的应用进行签名。此证书有一个带有已知密码的私钥,因此您可以 运行 和调试您的应用程序,而无需在每次更改项目时都输入密码。

Android 当您 运行 或从 IDE.

调试您的项目时,Studio 会自动在调试模式下为您的应用签名

您可以运行在模拟器和通过 USB 连接到您的开发机器的设备上调试以调试模式签名的应用程序,但不能分发以调试模式签名的应用程序。

默认情况下,调试配置使用调试密钥库,密码已知,默认密钥密码已知。调试密钥库位于 $HOME/.android/debug.keystore,如果不存在则创建。调试构建类型设置为自动使用此调试 SigningConfig。

据我所知,您只能通过命令行构建 unsigned。 方法如下 Build unsigned APK

这里是 link 的摘录。

构建未签名

如果您构建未签名的应用程序,则需要手动签名并对齐包。

要在发布模式下构建未签名的 .apk,请打开命令行并导航到模块目录的根目录。调用 assembleRelease 构建任务。

在 Windows 平台上,键入此命令:

gradlew.bat assembleRelease On Mac OS and Linux platforms, type this command:

$ ./gradlew assembleRelease 这会在项目 bin/ 目录中创建您的 Android 应用程序 .apk 文件,名为 -unsigned.apk.

注意:.apk 文件此时未签名,只有用您的私钥签名后才能安装。

创建未签名的 .apk 后,下一步是使用您的私钥对 .apk 进行签名,然后将其与 zipalign 对齐。要完成此过程,请阅读签署您的申请。

当您的 .apk 被签名和对齐后,它就可以分发给最终用户了。您应该在不同的设备或 AVD 上测试最终构建,以确保它在不同的平台上正常运行。

与您可以使用数字密钥对文档进行签名以证明其来源和所有权以及网站拥有相应证书的方式相同,您可以通过使用 SDK 提供的工具对 APK 进行签名来对它们执行相同的操作。

未签名与已签名 APK:

一个已经签了,一个还没有。就这样。想想 GPGed 电子邮件或网站,在地址栏上有绿色的东西用于签名的 APKs 和普通电子邮件或没有 ssl 的网站用于未签名的 APKs。

在讲debug模式和release模式之前,先简单介绍一下签名,其实就是说权威认证签名和自签名。

当您访问受 SSL 保护的网站时,您可能会看到一条警告消息或 url 旁边的红色 X,这取决于浏览器,警告您证书不可信。通常这意味着该网站正在使用自签名证书。这意味着您无法真正分辨出证书是谁制作的,也没有人能真正说它是真实的安全的,或者它来自它所说的地方。

另一方面,权威机构认证的签名证书,他们有一个已知的人(公司)并且(应该)保证证书的质量并且谁在使用它应该是谁。

现在回到 APK:

当您只是测试您的应用程序时,当您想要测试它时,您实际上并不需要适当的证书,因为您是在您的设备上安装该应用程序的人并且您知道(至少您应该)您正在制作的应用程序应该不会引起任何问题。

另一方面,当您将它们投放到 Android 市场时,重要的是要知道人们正在下载的应用程序确实是您的,这样您才能使用正确签名的证书.你不能失去的那个等等等等等等。

这使我们进入调试模式和发布模式。

它们只是 build/deploy environment/settings 可以帮助您提高工作效率。

当您 select 调试模式时,apk 将(可能?)包含更多调试信息(并且更大)并且通常会使用您的自签名证书(调试密钥) 这是(通常)自动生成的。

当您 select 发布模式时,它(应该)去除无用的调试信息以减小您的应用程序的大小,并使用在市场上发布应用程序所必需的认证密钥正确签署您的 APK。

希望这对您有所帮助,如果您需要更多说明,请在评论中提问