Android 的代码符号

本文说明如何手动对您的 Android(APK)应用进行签名,以便 Power Apps 整合。 如果您在创建和构建整合项目时选择了 Android 作为平台之一,则为 Android 应用签名。

重要提示

要签署 AAB 应用以进行 Google Play 分发,请参阅签署您的应用

准备工作

所需软件

在开始之前,请安装并设置:

先决条件

您需要:

  • 用于创建哈希键的应用程序名称。
  • 待签名的最新 APK 文件。

备注

使用 .jks 扩展名进行手动签名,使用 .pfx 扩展名进行自动签名。

生成密钥和签名哈希

备注

如果您在创建应用注册时已生成密钥和签名哈希,请跳转至手动签名

设置环境变量

如果未设置环境变量:

  1. 下载并安装 Android Studio 和 OpenSSL。
  2. keytoolopenssl 添加到您的 PATH 环境变量中:
    • C:\Program Files\Android\Android Studio\jbr\bin 添加到您的 PATH 中。
    • openssl.exe 的路径(例如 C:\Program Files\OpenSSL-Win64\bin)添加到 PATH 中。

手动签名流程

生成签名哈希密钥和证书

在命令提示符中运行此命令:

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

出现提示时:

  1. 输入密钥库的密码。
  2. 输入您的姓名、组织、位置和其他必需的详细信息。
  3. 确认信息。

运行以下命令以生成密钥和证书:

keytool -exportcert -alias powerappswrap -keystore powerappswrap.jks | openssl sha1 -binary | openssl base64

出现提示时,输入您先前创建的密钥库密码。

使用上面示例中的参数的 keytool 命令的屏幕截图。

参数说明:

参数 Description
genkey 生成密钥的命令
别名 密钥库条目的别名
keyalg 密钥算法名称
keystore 密钥库名称
keysize 每个密钥的大小
有效期 密钥的有效期(以天为单位)
exportcert 从密钥库读取证书
openssl 为 Android 生成 SHA1 密钥

用于自动密钥库签名流程

生成签名哈希密钥和证书

在命令提示符中运行此命令:

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

出现提示时:

  1. 输入密钥库的密码。
  2. 输入您的姓名、组织、位置和其他必需的详细信息。
  3. 确认信息。

运行以下命令以生成密钥和证书:

keytool -exportcert -alias powerappswrap -keystore powerappswrap.pfx | openssl sha1 -binary | openssl base64

出现提示时,输入您先前创建的密钥库密码。

使用之前示例中显示的参数的 keytool 命令的屏幕截图。

参数说明:

参数 Description
genkey 生成密钥。
别名 密钥库条目的别名。
keyalg 密钥算法名称。
keystore 密钥库名称。
keysize 每个密钥的大小。
有效期 密钥的有效期(以天为单位)。
exportcert 从密钥库读取证书
openssl 为 Android 生成 SHA1 密钥

手动对 APK 包进行签名(不用于 KV 签名)

如果在整合过程中不使用自动登录,或者尝试上传 AAB 文件到 Play Store,请按照以下步骤操作。 若要避免重复此过程,请尽可能使用自动登录。

找到 apksigner 工具

  1. 打开 Android Studio。
  2. 转到工具>SDK 管理器>Android SDK 位置,以查找您的 SDK 路径。
  3. 在 SDK 目录中,导航到:
    • build-tools>[版本号]> 查找 apksigner.bat(Windows)或 apksigner(Mac/Linux)
    • 或:build-tools>[版本号]>lib> 查找 apksigner.jar

包含 apksigner 位置信息的屏幕截图。

对 APK 文件进行签名

运行以下命令以对 APK 进行签名:

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

参数说明:

参数 Description
ks 密钥库文件的路径(例如,C:\Users\name\Desktop\powerappswrap.jks
ks-key-alias 生成密钥时使用的别名(例如,powerappswrap
PATH_TO_APK APK 文件的完整路径(例如,C:\Users\name\Downloads\MyApp.apk

提示时,输入密钥库密码。

示例:

apksigner.bat sign --ks C:\Users\name\Desktop\powerappswrap.jks --ks-key-alias powerappswrap C:\Users\name\Desktop\MyApp.apk

验证签名

签名后,使用以下命令验证 APK 签名:

apksigner.bat verify --verbose PATH_TO_APK

验证成功后,即表示您的 APK 已正确签名并可以分发。

有关更多信息,请参阅 Android Studio 命令行工具:apksigner

分发应用

对应用进行签名后,可以使用多种方法分发应用:

分发选项

另请参见