Google Play 游戏在 PC 上 要求你对你的游戏进行 PC 兼容性和优化更改。这些更改确保你的游戏可以在 PC 上运行,并且用户体验针对该平台进行了优化。
此外,Google Play 游戏在 PC 上对图形、设备输入和跨设备游戏有要求。有关更多信息,请参阅入门指南。
在进行 PC 兼容性和优化更改(x86-64 支持除外)时,你可以设置你的游戏以检测 Google Play 游戏在 PC 上,然后禁用或启用特定于平台的功能。这允许你对 Android 移动版和 PC 版发行版使用相同的 APK 或应用包。
以下是此页面上要求和建议的摘要
- 包含 x86-64 ABI(必需)
- 在运行时检测 Google Play 游戏(推荐)
- 处理 onPause 事件(推荐)
- 更新 UI 元素(必需)
- 禁用 Android 应用权限对话框(必需)
- 禁用不受支持的 Android 功能和权限(必需)
- 使用浏览器意图替换 WebView(推荐)
- 禁用不受支持的 Google Play 服务 API(必需)
- 启用作用域存储(必需)
- 迁移到 Google Analytics 4(推荐)
包含 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 目标
转到**播放器设置 > 其他设置 > 配置 > 脚本后端**,然后从下拉菜单中选择**IL2CPP** 以启用 IL2CPP 脚本后端。
为你的 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 环境中的onPause
(c++)事件。当玩家激活模拟器叠加层时,你的游戏是可见的,因此未能侦听onPause
事件会导致糟糕的用户体验。
更新 UI
某些 UI 元素和手势在 PC 上不适用,应进行更新。
必需
- 替换需要两个或更多手指(多点触控手势)的 UI 操作。例如,你应该将捏合缩放和其他多点触控手势替换为相应的鼠标和键盘输入。有关设备输入更改的详细信息,请参阅输入支持。
推荐
- 所有用户可见文本都应显示“点击”而不是“轻触”。
- 可滚动列表应具有滚动条。
- 用户可以平移的区域应具有滚动条或其他一些方法来快速遍历较大的距离。
- 不要为文本输入显示屏幕上的可点击键盘。
- 所有文本条目都应在文本字段边界内。
- 点击可见元素应
- 接受元素可见边界内的任何位置的点击。
- 不接受可见元素边界外的区域的点击。
- 对话框应具有可见的关闭按钮。不要检测对话框边界外的点击。
禁用大多数权限对话框
除麦克风权限外,Google Play 游戏电脑版不会显示权限对话框,因此您不应尝试显示它们或在运行时请求权限。如果您之前显示过权限对话框,则应更新您的游戏,使其不再在电脑上显示这些对话框。
不受支持的 Android 功能和权限
由发布流程 要求
手机和平板电脑上的一些常用硬件功能在电脑上不可用。这包括相机或玩家位置等硬件功能。任何需要缺少功能的游戏都无法下载并安装到玩家的电脑上。对电脑上任何缺少功能的请求都会自动失败。
您可以通过输入以下内容查看可用功能的完整列表
adb shell pm list features
为使您的游戏与电脑兼容,需要进行以下更改
请在您的应用清单中将功能标记为可选,方法是在
<uses-feature>
声明中添加android:required="false"
。这仅适用于已在您的应用清单中声明的功能。请勿尝试在运行时使用缺少的功能。如果您在移动设备和电脑渠道上都使用相同的 APK,请在运行时检测电脑环境并避免相关的代码路径。
请勿在运行时请求不受支持的 Android 权限。如果您在移动设备和电脑渠道上都使用相同的 APK,请在运行时检测电脑环境并避免相关的代码路径。您无需更新清单。
有关应用清单兼容性的更多信息,请参阅Chromebook 应用清单兼容性指南。
功能测试要求
在向 Google Play Console 提交第一个测试版本之前,请移除以下硬件功能
android.hardware.wifi
android.hardware.bluetooth
android.hardware.camera
android.hardware.location
出于兼容性原因,运行pm list features
时,其中一些功能可能会被列为受支持的功能,但并未完全实现。有关如何移除android.hardware.wifi
功能的更多信息,请参阅监控连接状态和连接计量。有关不受支持功能的完整列表,请参阅Chromebook 的应用清单兼容性指南。
质量测试要求
这些常用硬件功能与电脑不兼容,因此您必须在向 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
不受支持的权限
以下常用权限在电脑上不受支持,因此您的游戏必须为 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
浏览器意图会在电脑的原生网页浏览器中加载,而不是在 Google Play 游戏电脑版环境中加载。在大多数情况下,这对于玩家来说是一种理想的体验。
为了简化移植工作,Google Play 游戏电脑版确实支持WebView。由于这会在 Google Play 游戏电脑版环境中打开,因此它会缺少典型的桌面浏览器。如果您之前使用WebView
来分享您的服务条款、隐私政策或其他类似内容,则应改为调用浏览器意图。
禁用不受支持的 Google Play 服务 API
由发布流程 要求
Google Play 游戏电脑版自带其自身的 Google Play 服务变体,其中仅包含 Google Play 服务 API 的子集。您需要确认您的应用程序不严重依赖于在电脑上被省略或不受支持的模块。请注意,某些模块可能可用,但其功能并非始终受支持。例如,当 Google Play 游戏电脑版关闭时,Firebase Cloud Messaging 将无法运行。
受支持的模块
这些模块目前可用并受 Google Play 游戏电脑版支持,并计划支持更多功能
有限支持
以下模块部分可用。我们将尽最大努力在 Google Play 游戏电脑版上支持它们,但我们无法保证其功能。
- Google Cloud Messaging(已弃用,请使用 Firebase Cloud Messaging)
- Firebase 身份验证(电话号码身份验证不起作用)
- Firebase Cloud Messaging
- Firebase 通用库
- Firebase ML
- Firebase 远程配置
- Firebase Analytics
不受支持
这些模块在 Google Play 游戏电脑版中不受支持,但在 Google Play 游戏电脑版中失败时不会导致问题
- Google Analytics(已弃用,请使用 Firebase Analytics)
- Google Cast
- Awareness API
- Drive(已弃用,即将移除)
- FIDO
- Firebase 实时数据库
- Firestore
- Firebase A/B 测试
- Google Fit
- 地址 API
- 即时应用 API
- 位置 API
- Google 地图 SDK
- Nearby
- 全景
- 地点
- Google+
- SafetyNet(已弃用,请填写兴趣表以选择加入即将推出的Play Integrity API)
- Google 标记管理器
- Wear OS
已损坏
由发布流程 要求
您不得在电脑上使用这些模块,因为它们可能会导致 Google Play 游戏电脑版出现意外行为。
启用作用域存储
由发布流程 要求
如果您游戏读取或写入外部存储,则此部分适用。作用域存储强制执行是读取和写入存储的替代方法。这样做无需提示玩家授予这些敏感权限
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
有关作用域存储的更多信息,请参阅
分析
旧版 Google Analytics 产品在 Google Play 游戏电脑版中无法运行。如果这适用于您的游戏,您应该将其迁移到Google Analytics 4。
如果您当前使用的是Google Analytics 360,则这只会影响您的游戏。如果您使用Firebase SDK来跟踪游戏中的分析事件,并且可以在Google Analytics 控制台中看到您的游戏作为属性,则您无需采取任何进一步的措施。