Google Play游戏在PC上的PC兼容性和优化

Google Play游戏在PC上 要求您对游戏进行PC兼容性和优化更改。这些更改可确保您的游戏可以在PC上运行,并且用户体验针对平台进行了优化。

此外,Google Play游戏在PC上还有图形、设备输入和跨设备游戏要求。有关更多信息,请参阅入门指南

在进行PC兼容性和优化更改(x86-64支持除外)时,您可以将游戏设置为检测Google Play游戏在PC上,然后禁用或启用特定于平台的功能。这使您可以对Android移动版和PC版发布使用相同的APK或应用包。

以下是此页面上要求和建议的摘要

包含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. 转到播放器设置>其他设置>配置>脚本后端,然后从下拉菜单中选择IL2CPP以启用IL2CPP脚本后端。

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

    • Unity 2018及更早版本:转到播放器设置>其他设置>目标架构,然后选中x86复选框。由于Unity 2018仅支持x86目标,因此您将无法构建x86-64。此构建将需要审查团队的例外情况。请联系您的Google联系人以请求x86例外情况。

    • Unity 2019长期支持(LTS)版本及更高版本:转到播放器设置>其他设置>目标架构并启用x86-64(ChromeOS)

检测Google Play游戏在PC上

您可以在运行时检测Google Play游戏在PC平台上的运行情况,从而允许您在游戏中启用或禁用特定于平台的功能。

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

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游戏在PC环境中处理onPausec++)事件非常重要。当玩家激活模拟器叠加层时,您的游戏可见,因此未侦听onPause事件会导致糟糕的用户体验。

更新UI

某些UI元素和手势不适用于PC,应予以更新。

必需

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

推荐

  • 所有用户可见的文本都应显示“点击”而不是“轻触”。
  • 可滚动列表应具有滚动条。
  • 用户可以平移的区域应具有滚动条或其他一些方法来快速遍历较大的距离。
  • 不要在屏幕上显示可点击的键盘以进行文本输入。
  • 所有文本输入都应在文本字段边界内。
  • 可见元素上的点击应
    • 接受元素可见边界内的任何位置的点击。
    • 不要接受可见元素外部区域的点击。
  • 对话框应具有可见的关闭按钮。不要检测对话框边界外的点击。

禁用大多数权限对话框

除了麦克风权限外,Google Play游戏在PC上不显示权限对话框,因此您不应尝试在运行时显示或请求权限。如果您以前显示过权限对话框,则应更新您的游戏,使其不再在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 Console 提交第一个测试版本之前,请移除以下硬件功能

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

出于兼容性考虑,运行pm list features时,某些功能可能会被列为受支持,但并非完全实现。有关如何移除android.hardware.wifi功能的更多信息,请参阅监控连接状态和连接计量。有关不受支持功能的完整列表,请参阅Chromebook 的应用清单兼容性指南

质量测试要求

以下常用硬件功能与 PC 不兼容,因此您必须在向 Google Play Console 进行最终提交之前将其移除

  • 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 游戏在 PC 上禁用它们

  • 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

浏览器意图将在 PC 的原生网络浏览器中加载,而不是 Google Play 游戏在 PC 环境中的浏览器。在大多数情况下,这对于玩家来说是理想的体验。

为了简化移植,Google Play 游戏在 PC 上确实支持WebView。由于它在 Google Play 游戏在 PC 环境中打开,因此它将缺少典型的桌面浏览器。如果您之前使用WebView来共享您的服务条款、隐私政策或其他类似内容,则应改为调用浏览器意图

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

发布流程 要求

Google Play 游戏在 PC 上自带了自己的 Google Play 服务变体,其中仅包含 Google Play 服务 API 的子集。您需要确认您的应用程序不严重依赖于 PC 上省略或不受支持的模块。请注意,某些模块可能可用,但其功能并非始终受支持。例如,当 Google Play 游戏在 PC 上关闭时,Firebase Cloud Messaging 将无法正常工作。

受支持的模块

这些模块目前可用于 Google Play 游戏在 PC 上,并计划提供更多功能支持

有限支持

以下模块部分可用。我们将尽最大努力在 Google Play 游戏在 PC 上支持它们,但我们无法保证其功能。

不受支持

这些模块在 Google Play 游戏在 PC 上不受支持,但在 Google Play 游戏在 PC 上失败时不会导致问题

已损坏

发布流程 要求

您不得在 PC 上使用这些模块,因为它们可能导致 Google Play 游戏在 PC 上出现意外行为。

启用范围存储

发布流程 要求

如果您游戏读取或写入外部存储,则此部分适用。范围存储执行是读取和写入存储的替代方法。这样做无需提示玩家获取这些敏感权限

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

有关范围存储的更多信息,请参阅

分析

旧版 Google Analytics 产品在 Google Play 游戏在 PC 上无法正常工作。如果这适用于您的游戏,您应该将其迁移到Google Analytics 4

这仅在您当前使用Google Analytics 360时才会影响您的游戏。如果您使用Firebase SDK跟踪游戏中的分析事件,并且可以在Google Analytics 控制台中看到您的游戏作为一个属性,则无需执行任何其他操作。