跳到主要内容

Android 常见问题

生成 Android key hash

借助 OpenSSL 工具

  1. 下载 OpenSSL

  2. 配置 OpenSSL 环境变量。

  3. 配置 JDK 来使用 keytool。

  4. 生成 key hash

    • 在 Mac 上生成 key hash,运行以下命令:
    keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
    • 在 Windows 上生成 key hash,运行以下命令:
    keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
  5. 输入密钥库口令后,可获得28位字符,即为目标散列。
    对于 Unity 其默认使用的 Debug keystore,其目录为:C:\Users\XXXXX\.android\debug.keystore

  6. 补充默认 debug.keystore 的信息
    默认 debug.keystore 的信息如下:

    Keystore name: “debug.keystore”
    Keystore password: “android”
    Key alias: “androiddebugkey”
    Key password: “android”
    CN: “CN=Android Debug,O=Android,C=US”

Android 获取 SHA1 / MD5 值

使用 keytool 获取 SHA1

Keytool 是 JDK 自带的工具。使用 keytool 获取 SHA1 的步骤如下:

  1. 进入控制台
  2. cd 到工程的 keystore 目录
  3. 输入命令:keytool -list -v -keystore android.keystore
    android.keystore 为自己 APK 的 keystore
  4. 输入密钥库口令

在 Android 系统中,Unity 在 12+(API 31+) 系统上有黑屏问题。

Answer

这是 Unity 本身的问题。尝试在 Player Settings 中点击 Mute Other Audio Sources 解决问题。

更多信息,请参见 Unity 论坛 Android 12 Telephony CrashUnity 文档 PlayerSettings.muteOtherAudioSources

FAQs_Unity

安卓启动 crash,报错 "java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/api/Apiszzf at com.google.android.gms.games.Games,<clinit>(Unknown Source:0)"

Answer

在 Unreal Engine,将 aar-imports 文件中的 Google 版本升级,改为 V1.17。

FAQs_Unity

不同 AAR 插件中包含重复的 .so 文件,是否会对产物体积造成影响?

Answer

不会。Player Network SDK V1.24.00 版本升级 Gradle 以后,AAR 插件中会包含该插件所依赖的 .so 文件,例如 INTLUnityAdapter.aar 插件中包含了 INTLCore.so 文件。因此在 gradle 文件中已经定义了 pickFirst 来避免 .so 文件出现重复的问题,在最终产物 APK 中不会包含多个重复的 .so 文件,故不受对体积造成影响。

Player Network SDK V1.24.01 已将 AAR 插件中其他的 .so 文件去除。