1. 生成签名证书
在Android Studio工程的菜单栏中,依次点击
Build > Generate Signed Bundle/APK;
在
Generate Signed Bundle or APK对话框中,选择Android App Bundle或APK,然后点击Next;
在填写签名文件信息页面,如果已经存在签名文件,则点击
Choose existing...选择签名文件,并填写对应签名文件的Key store password、Key alias和Key password,然后点击Next;
如果不存在签名文件,则选择
Create new...创建一个新的签名文件,在New Key Store窗口中填写Key store path、Password、Key Alias、Key Password和Certificate等信息,然后点击OK;
完成新签名文件创建后,在
Generate Signed Bundle or APK弹出框页面上会显示对应签名文件的信息,然后点击Next就可以使用创建的签名文件打包了。
2. 签名证书指纹
通常在创建第三方平台创建应用的时候可能会使用到应用的签名证书指纹,比如SHA1、SHA256等,以下提供两种生成签名证书指纹的方法。
2.1 Gradle任务
首先要先在项目中完成签名证书的配置,然后在Android Studio中运行Gradle signingReport任务:
- 依次选择
View > Tool Windows > Gradle以打开Gradle工具窗口 - 依次选择
YourProject > Tasks > android,双击signingReport任务输出签名证书指纹。
Gradle signingReport任务输出内容如下:

[!TIP] 注意:如果在 Gradle 任务列表中没看到 signingReport,请通过依次选择
File > Settings(在 macOS 上则需依次选择Android Studio > Settings)打开 Android Studio 设置对话框,选择Experimental,然后在Gradle标题下取消选中Only include test tasks in the Gradle task list generated during Gradle sync的复选框,点击右下角的Apply关闭该窗口后选择File > Sync Project with Gradle Files将项目与Gradle文件同步。
2.2 命令行工具
在 Windows 环境下打开命令行工具,进入keytool.exe所在的目录,或者在 macOS 环境下打开Terminal终端,然后执行命令keytool -list -v -keystore <keystore-file>,按命令行提示进行操作,其中<keystore-file>为应用签名证书的完整路径:
keytool -list -v -keystore D:\WorkSpace\Sofish\app\sofish.jks
keytool命令输出内容如下:

3. 签名密钥哈希
Facebook在创建应用的时候需要提供密钥哈希,Facebook支持同时配置多个密钥哈希,以下提供两种生成密钥哈希的方法。
3.1 Java代码
确保配置的签名正确后,可以通过以下代码生成密钥哈希:
private void generateKeyHash(Context context) {
try {
String packageName = context.getPackageName();
PackageInfo packageInfo = context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
Signature[] signatures = packageInfo.signatures;
if (signatures != null && signatures.length > 0) {
for (Signature signature : signatures) {
MessageDigest digest = MessageDigest.getInstance("SHA-1");
digest.update(signature.toByteArray());
String keyHash = Base64.encodeToString(digest.digest(), Base64.DEFAULT);
System.out.println("KeyHash ==> " + keyHash);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
[!TIP] 在发布应用时,通常会使用与开发环境不同的签名证书完成签名,请确保在Facebook 开发者设置中配置正确的密钥哈希,Facebook支持同时配置多个密钥哈希。
3.2 命令行工具
在 Windows 环境下通过 Google 代码归档 下载 OpenSSL,或者在 macOS 环境下通过 OpenSSL 下载 OpenSSL,OpenSSL配置完成后,在命令行工具中执行命令keytool -exportcert -alias <alias> -keystore <keystore-file> | openssl sha1 -binary | openssl base64,其中<alias>为签名证书的别名,<keystore-file>为应用签名证书的完整路径:
keytool -exportcert -alias sofish -keystore D:\WorkSpace\Sofish\app\sofish.jks | openssl sha1 -binary | openssl base64