跳到主要内容

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 文件去除。

Google Play 审核提申请示权限违反政策:Your app doesn't adhere to Google Play Developer Programme Policies.

Answer

2024年10月31日开始,Google Play 会对申请了照片与视频权限的应用进行较强的限制,例如 android.permission.READ_MEDIA_IMAGESandroid.permission.READ_MEDIA_VIDEO。这些权限一般有关于媒体文件的访问(如渠道分享功能),但在当前版本已不再使用。

如果您所使用的 SDK 版本为 V1.22.01 ~ V1.24.00,请在 AndroidManifest 文件中移除这些权限,或升级到 V1.24.01 或以上。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
... >

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" tools:node="remove" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" tools:node="remove" />

...
</manifest>

更多信息,请参见 Android 渠道权限声明有关 Google Play 照片和视频权限政策的详细信息