Android 常见问题
生成 Android key hash
借助 OpenSSL 工具
下载 OpenSSL。
配置 OpenSSL 环境变量。
配置 JDK 来使用 keytool。
生成 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
输入密钥库口令后,可获得28位字符,即为目标散列。
对于 Unity 其默认使用的 Debug keystore,其目录为:C:\Users\XXXXX\.android\debug.keystore
。补充默认
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 的步骤如下:
- 进入控制台
- cd 到工程的 keystore 目录
- 输入命令:
keytool -list -v -keystore android.keystore
android.keystore
为自己 APK 的 keystore - 输入密钥库口令
在 Android 系统中,Unity 在 12+(API 31+) 系统上有黑屏问题。
这是 Unity 本身的问题。尝试在 Player Settings 中点击 Mute Other Audio Sources 解决问题。
更多信息,请参见 Unity 论坛 Android 12 Telephony Crash 和 Unity 文档 PlayerSettings.muteOtherAudioSources。
安卓启动 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)"
在 Unreal Engine,将 aar-imports
文件中的 Google 版本升级,改为 V1.17。
不同 AAR 插件中包含重复的 .so 文件,是否会对产物体积造成影响?
不会。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 文件去除。