Google Play 游戏电脑版的 PC 兼容性和优化

Google Play 游戏电脑版要求您对游戏做出 PC 兼容性和优化方面的更改。这些更改可确保游戏可以在 PC 上运行,并且会针对该平台优化用户体验。

此外,Google Play 游戏电脑版还具有图形、设备输入和跨设备播放要求。如需了解详情,请参阅入门指南

在进行 PC 兼容性和优化方面的更改(不包括 x86-64 支持)时,您可以将游戏设置为检测 Google Play 游戏电脑版,然后停用或启用针对具体平台的功能。这样您就可以为 Android 移动版和 PC 版使用相同的 APK 或 app bundle。

下面简要说明了本页中的要求和建议:

添加 x86-64 ABI 架构

发布流程需满足此要求

游戏中包含的所有库都需要采用与 x86-64 ABI 兼容的版本,以确保在平台上实现最佳性能和稳定性。

如果您的游戏在技术上无法做到提供 64 位 x86 可执行文件,您必须与审核团队联系,申请例外处理。由于存在例外情况,您的游戏无法获得完整认证,但可以作为“可玩”游戏放入目录中。

库编译

为确保实现最佳的 x86-64 处理器兼容性,请不要在编译库时使用 Atom 指令集。例如,在使用 gcc 时,请避免使用 -march=atom,而改为使用 -march=x86-64

Unity 中的目标架构

Unity 2019 和 2020 的部分版本在 Android 上不支持 x86-64 架构。请确保您使用的是 Unity 2019.4.31f1、2020.3.19f1 或更高版本。

如果您的游戏使用兼容版本的 Unity 游戏引擎,请执行以下操作以启用 x86-64 Android 目标:

  1. 依次前往 Player Settings > Other Settings > Configuration > Scripting Backend,然后从下拉菜单中选择 IL2CPP 以启用 IL2CPP Scripting Backend。

  2. 为您的 Unity 版本启用 x86-64 Android 目标:

    • Unity 2018 及更早版本:依次前往 Player Settings > Other Settings > Target Architecture,然后选中 x86 复选框。 由于 Unity 2018 仅支持 x86 目标,因此您无法构建 x86-64。此 build 将需要请求审核团队给予例外处理。 如需针对 x86 请求例外处理,请与您的 Google 联系人联系。

    • Unity 2019 长期支持渠道 (LTS) 版本及更高版本:依次前往 Player Settings > Other Settings > Target Architecture,然后启用 x86-64 (ChromeOS)

检测 Google Play 游戏电脑版

您可以在运行时检测 Google Play 游戏电脑版平台,从而允许您在游戏中启用或停用特定于平台的功能。

检查系统功能 com.google.android.play.feature.HPE_EXPERIENCE,以确定您的游戏是否是在 Google Play 游戏电脑版平台上运行:

Kotlin

    var isPC = packageManager.hasSystemFeature("com.google.android.play.feature.HPE_EXPERIENCE")
  

Java

    PackageManager pm = getPackageManager();
    boolean isPC = pm.hasSystemFeature("com.google.android.play.feature.HPE_EXPERIENCE")
  

C#

var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var currentActivity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
var packageManager = currentActivity.Call<AndroidJavaObject>("getPackageManager");
var isPC = packageManager.Call<bool>("hasSystemFeature", "com.google.android.play.feature.HPE_EXPERIENCE");
  

处理 Android 生命周期事件

在 Google Play 游戏电脑版环境中处理 onPause (c++) 事件非常重要。当玩家激活模拟器叠加层时,您的游戏可见,因此,未能监听 onPause 事件可能会导致糟糕的用户体验。

更新界面

某些界面元素和手势不适用于 PC,应该进行更新。

必需:

  • 替换需要两个或更多个手指的界面操作(多点触控手势)。例如,您应将双指张合缩放和其他多点触控手势替换为相应的鼠标和键盘输入。如需详细了解设备输入更改,请参阅输入支持

推荐:

  • 用户可见的所有文字都应显示“点击”而非“点按”。
  • 可滚动列表应具有滚动条。
  • 用户可以平移的区域应具有滚动条,或可通过其他方式快速遍历较大距离。
  • 不要为文本输入而在屏幕上显示可点击的键盘。
  • 所有文本输入都不得超出文本字段边界。
  • 对于可见元素的点击应满足以下条件:
    • 接受在元素可见边界内的任意位置的点击。
    • 不接受点击可见元素之外的区域。
  • 对话框中应包含可见的关闭按钮。请勿检测对话框边界之外的点击。

停用大多数权限对话框

除麦克风权限外,Google Play 游戏电脑版不会显示权限对话框,因此您不应尝试在运行时显示这些权限对话框或请求权限。如果您之前显示过权限对话框,请更新游戏,使其在 PC 上不再显示。

不受支持的 Android 功能和权限

发布流程需满足此要求

手机和平板电脑上的部分常见硬件功能不适用于 PC。其中包括相机或玩家的位置定位等硬件功能。任何缺少必要功能的游戏都无法下载并安装到玩家的 PC 上。针对 PC 上缺少的任何功能的请求都会自动失败。

如需查看可用功能的完整列表,请输入以下内容:

adb shell pm list features

为使您的游戏与 PC 兼容,必须进行以下更改:

  • 通过在 <uses-feature> 声明中添加 android:required="false"即可在应用清单中将功能标记为可选。这仅适用于应用清单中已声明的功能。

  • 请勿尝试在运行时使用缺少的功能。如果您在移动设备和 PC 轨道上使用相同的 APK,请在运行时检测 PC 环境,并避开相关的代码路径。

  • 请勿在运行时请求不受支持的 Android 权限。如果您在移动设备和 PC 轨道上使用相同的 APK,请在运行时检测 PC 环境,并避开相关的代码路径。您无需更新您的清单。

如需详细了解应用清单兼容性,请参阅 Chromebook 应用清单兼容性指南。

功能测试要求

在向 Google Play 管理中心提交第一个测试 build 之前,请先移除以下硬件功能:

  • android.hardware.wifi
  • android.hardware.bluetooth
  • android.hardware.camera
  • android.hardware.location

运行 pm list features 时,其中部分功能可能会出于兼容性原因而列为受支持,但并未完全实现。如需详细了解如何移除 android.hardware.wifi 功能,请参阅监控网络连接状态和网络连接计量。如需查看不受支持的功能的完整列表,请参阅 Chromebook 的应用清单兼容性指南

质量测试要求

以下常用硬件功能与 PC 不兼容,因此您必须在最终提交到 Google Play 管理中心之前移除这些功能:

  • android.hardware.audio.pro
  • android.hardware.bluetooth
  • android.hardware.camera
  • android.hardware.consumerir
  • android.hardware.location
  • android.hardware.nfc
  • android.hardware.sensor.light
  • android.hardware.sensor.accelerometer
  • android.hardware.sensor.barometer
  • android.hardware.sensor.compass
  • android.hardware.sensor.gyroscope
  • android.hardware.sensor.proximity
  • android.hardware.telephony
  • android.hardware.touchscreen
  • android.hardware.usb.accessory
  • android.hardware.usb.host
  • android.hardware.wifi
  • android.software.midi

不受支持的权限

PC 不支持以下常用权限,因此您的游戏必须针对 Google Play 游戏电脑版停用这些权限:

  • android.permission.ACCESS_COARSE_LOCATION
  • android.permission.ACCESS_FINE_LOCATION
  • android.permission.ACCESS_WIFI_STATE
  • android.permission.BLUETOOTH
  • android.permission.CAMERA
  • android.permission.FOREGROUND_SERVICE
  • android.permission.GET_ACCOUNTS
  • android.permission.INSTALL_PACKAGES
  • android.permission.READ_CONTACTS
  • android.permission.READ_EXTERNAL_STORAGE
  • android.permission.READ_PHONE_STATE
  • android.permission.RECEIVE_BOOT_COMPLETED
  • android.permission.REQUEST_INSTALL_PACKAGES
  • android.permission.SYSTEM_ALERT_WINDOW
  • android.permission.USE_CREDENTIALS
  • android.permission.WRITE_EXTERNAL_STORAGE
  • android.permission.WRITE_SETTINGS
  • com.google.android.gms.permission.ACTIVITY_RECOGNITION

外部网站和 WebView

浏览器 intent 会在 PC 的原生网络浏览器中加载,而不是在 Google Play 游戏电脑版环境中加载。在大多数情况下,这对玩家来说是一种理想的体验。

为便于移植,Google Play 游戏电脑版支持 WebView。由于 WebView 会在 Google Play 游戏电脑版环境中打开,因此会缺少典型的桌面浏览器。如果您之前使用 WebView 分享服务条款、隐私权政策或其他类似内容,则应改为调用浏览器 intent

停用不受支持的 Google Play 服务 API

发布流程需满足此要求

Google Play 游戏电脑版拥有自己的 Google Play 服务变体,该变体中仅包含部分 Google Play 服务 API。您需要确认应用没有严重依赖于 PC 上省略或不支持的模块。请注意,其中某些模块可能可以使用,但其功能并非始终都受支持。例如,关闭 Google Play 游戏电脑版后,Firebase Cloud Messaging 将无法正常运行。

支持的模块

Google Play 游戏电脑版目前提供并支持以下模块,同时计划支持更多功能:

有限的支持

以下模块只有部分功能可用。我们会尽最大努力在 Google Play 游戏电脑版中为这些模块提供支持,但无法保证其功能正常。

不支持

Google Play 游戏电脑版不支持以下模块,但它们在出现故障时不会在 Google Play 游戏电脑版中引发问题:

已损坏

发布流程需满足此要求

您不得在 PC 上使用以下模块,因为它们可能会导致 Google Play 游戏电脑版中出现意外行为。

启用分区存储

发布流程需满足此要求

如果您的游戏读取或写入外部存储空间,则本部分适用。必须执行分区存储,将其作为读取和写入存储空间的另一种方式。这样一来,就不需要提示玩家授予以下敏感权限:

  • android.permission.READ_EXTERNAL_STORAGE
  • android.permission.WRITE_EXTERNAL_STORAGE

如需详细了解分区存储,请参阅:

分析

旧版 Google Analytics 产品在 Google Play Games 电脑版中无法正常运行。如果这适用于您的游戏,则应将其迁移到 Google Analytics 4

只有当您目前在使用 Google Analytics 360 时,上述情况才会影响您的游戏。如果您在使用 Firebase SDK 跟踪游戏中的分析事件,并且可以看到自己的游戏以媒体资源的形式存在于 Google Analytics 控制台中,您就不必执行进一步的操作。