添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

本文将介绍如何手动为 Android (APK) 进行代码签名。 如果您在创建和构建 整合项目 时选择了 Android 作为 平台 之一,您需要为 Android 应用签名。

如果您希望签署 AAB 应用以进行 Google Play 分发,请参阅 签署您的应用

准备您的 PC

您需要以下信息才能开始:

  • 设置 Android Studio
  • 设置 OpenSSL
  • 设置 apksigner 工具
  • 用于创建哈希键的应用程序名称。
  • 最新的 APK 文件,以便在过程中进行签名。
  • 如果您在创建 应用注册 时已经生成了密钥和签名哈希,请直接跳到 签署 APK 包

    我们将使用 keytool.exe (安装 Android Studio 后可用,从文件夹位置“Drive:\Program Files\Android\Android Studio\jre\bin\keytool.exe”)创建证书来签署应用程序包。 Keytool 用于管理加密密钥、X.509 证书链和可信证书的密钥库(数据库)。

    如果没有环境变量,请打开命令提示符并运行以下命令以生成密钥:

  • 下载 Android Studio、openssl
  • 添加 keytool 和 openssl 作为环境变量。 添加 C:\Program Files\Android\Android Studio\jbr\bin 作为 env 变量。 在环境变量(C:\Program Files\OpenSSL-Win64\bin)中添加 openssl.exe 路径
  • 运行以下命令 ---keytool -genkey -alias powerappswrap -keyalg RSA -keystore powerappswrap.jks -keysize 2048 -validity 10000 生成密钥
  • 在 cmd - keytool -exportcert -alias powerappswrap -keystore powerappswrap.jks | openssl sha1 -binary | openssl base64 Generate Signature Hash 中运行此命令
  • 如果您有环境变量,请打开命令提示符并运行以下命令以生成密钥:

    keytool -genkey -alias SIGNATURE_ALIAS -keyalg RSA -keystore PATH_TO_KEYSTORE -keysize 2048 -validity 10000

    genkey - 生成密钥的命令。 alias - 指示要在将来使用的别名引用包含将要生成的密钥的密钥库条目。 keyalg - 密钥算法名称。 keystore - 您正在使用的密钥库的名称。 keysize - 要生成的每个密钥的大小。 validity - 密钥的有效期,以天数计。
  • 如果正在准备密钥保管库,PATH_TO_KEYSTORE 应该有 .pfx 扩展名。

    keytool -genkey -alias powerappswrap -keyalg RSA -keystore powerappswrap.pfx -keysize 2048 -validity 10000

  • 如果您在准备进行手动签名,PATH_TO_KEYSTORE 应该有 .jks 扩展名。

    keytool -genkey -alias powerappswrap -keyalg RSA -keystore \Users\name\Desktop\powerappswrap.jks -keysize 2048 -validity 10000

    生成密钥后,将使用 keytool 中的 exportcert 命令导出密钥库证书。

    keytool -exportcert -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE | openssl sha1 -binary | openssl base64

    exportcert - 从密钥库中读取与别名关联的证书并将其存储在 cert_file 文件中。 未指定文件时,证书输出到 stdout。
  • alias - 早期 生成密钥时使用的别名。 keystore - 您正在使用的密钥库的名称。 openssl - 为 Android 生成 SHA1 密钥。

    注册应用 时将生成的签名哈希添加到 重定向 URI 中。

    手动将 SHA1 十六进制转换为 Base64 编码的签名哈希

    如果您的签名哈希在 Azure 门户中未正确编码或不可接受,您可能会看到以下错误:

    “签名哈希必须是 base64 编码的 SHA1。”

    出现此错误时,请尝试使用以下步骤生成签名哈希:

  • 运行 keytool -list -v -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE 以详细模式列出证书信息。
  • 从输出中复制 证书指纹 部分的 SHA1 值。 确保只复制十六进制值。
    例如: EF:11:45:3D:F1:72:D9:8C:43:32:CD:0A:49:C2:E4:75:2D:B3:2D:9F
  • 使用任何可用的“十六进制到 Base64”转换器将复制的证书指纹十六进制值转换为 Base64 编码值。
    Base64 编码值的示例: 8CPPeLaz9etdqQyaQubcqsy2Tw=
  • 注册应用 时,复制生成的 Base64 编码值作为 Azure 门户中的 签名哈希

    手动签署 APK 包

    如果您尚未使用自动登录功能打包应用,或者正在尝试上传 Play 商店的 AAB 文件,则需要执行这些步骤。 为避免重复此步骤,建议使用自动登录。

    要签署 APK 包,我们使用 apksigner 工具 。 此工具允许您签署 APK 并确保 APK 包签名将在 APK 支持的所有 Android 平台上成功验证。

    查找您的 apksigner

  • 检查 Android Studio 中的 Android SDK 路径。

  • 选择 工具 > SDK 管理器 > Android SDK 位置

    如果使用 iOS,检查 buildTools 版本 目录中的 apksigner 文件:

    转到 SDK 目录 > 构建工具 > buildToolsVersion > lib 并检查 apksigner.jar 文件

    使用 apksigner 文件

    运行以下命令来使用 apksigner 并对包进行签名:

    apksigner.bat sign --ks PATH_TO_KEYSTORE --ks-key-alias KEY_ALIAS PATH_TO_APK

    ks - 密钥库的路径。
  • ks-key-alias - APK 文件的密钥别名路径。

    出现提示时,输入密码。

    详细信息: Android Studio 命令行工具: apksigner

    您可以在 App Center 等分发服务上托管包。 要使用 Microsoft Intune 进行分发,请参阅 将 Android 业务线应用添加到 Microsoft Intune 。 若要了解有关向 Intune 应用保护服务提供应用访问权限的信息,请参阅 向 Intune 应用保护服务提供应用访问权限

    手动签署 APK - Xamarin iOS 的手动代码签名 整合常见问题 Power Apps 中整合功能的故障排除问题