使用自动完整性保护功能防止未经授权的修改或再分发行为

注意:本页中介绍的功能目前仅面向特定 Play 合作伙伴提供。

Google Play 的自动完整性保护功能有助于保护您的应用和游戏,防范通过未经授权的修改和再分发形式破坏完整性的行为。自动完整性保护功能在没有数据连接的情况下也可保护您的应用。此功能可在 Play 管理中心一键开启,无需开发者在测试前做任何工作,也无需进行后端服务器集成。

运作方式

自动完整性保护功能会通过为应用代码添加运行时检查来限制修改和再分发行为,同时利用先进的混淆技术和反逆向工程技术使这类检查不易被移除。如果未能通过安装程序检查,系统会提示用户从 Google Play 获取应用。如果未能通过修改检查,则应用不会运行。经过修改的应用版本中可能存在有害内容,此保护机制有助于避免用户受其侵害。

自动完整性保护功能旨在实现以下目的:

  • 防范未经授权的修改:自动完整性保护功能有助于保护您的应用,防范修改行为,让应用行为遭到修改(例如移除结算功能、添加广告、更改广告所有者 ID 或添加恶意软件)的非官方副本更难以分发。
  • 防范付费应用盗版:如果用户通过非官方渠道获取未经修改的 Play 版应用,自动完整性保护功能会提示用户通过 Google Play 购买,从而防范盗版。此提示为可选功能,在自动完整性保护功能的配置页面中取消选中“必须从 Google Play 安装”即可关闭。
  • 增加接收官方更新的用户数量:如果用户旁加载未经修改的 Play 版应用,自动完整性保护功能会提示用户将该应用添加到其 Play 内容库,以确保能够持续收到应用更新。此提示为可选功能,在自动完整性保护功能的配置页面中取消选中“必须从 Google Play 安装”即可关闭。
重要提示:自动完整性保护功能并不能保证防范所有破解、盗版、重新打包和再分发行为。自动完整性保护功能可令上述行为实现起来更为复杂、成本更高,从而降低相应行为取得成功的可能性。Google Play 会不断增强自动完整性保护功能,使您的新版应用能够自动获得最新、最强大的保护。

设置自动完整性保护功能

下面的步骤介绍了您需要执行哪些操作才能开始使用自动完整性保护功能。点击某个部分即可将其展开。

前提条件

如果您为特定应用开启自动完整性保护,那么 Google Play 在您创建每个可面向设备分发的版本时都会自动添加保护机制。该保护机制要求 Google Play 代表您创建经过修改的 APK 并为其签名,因此您必须:

请注意以下限制因素:

  • 自动完整性保护功能仅在 Android 6.0 Marshmallow(API 级别 23)及更高版本上受支持。Android M 发布于 2015 年;截至 2023 年,以 midSDKVersion 23 及更高版本为目标平台的设备在活跃 Android 设备中的占比将超过 97%。
  • 自动完整性保护功能支持以下 ABI:x86、x86_64、armeabi-v7a 和 arm64-v8a。如需更新应用的目标 ABI,请更新 Gradle 设置。您可从定位条件中移除没有活跃 Android 设备在使用的其他 ABI,不会影响应用的可用性。
  • 自动完整性保护功能可在离线状态下使用。不过,如果设备上的 Play 商店应用长时间处于离线状态,则“必须从 Google Play 安装”设置会定期要求您建立数据连接。
  • 如果您的应用已在使用 Play 许可服务,您应关闭“必须从 Google Play 安装”。
  • 在您将应用上传到内部应用分享部分时,系统不会应用保护机制。请格外注意,务必仅与可信任的团队成员分享内部应用分享链接,而不要对外分享未受保护的版本。
  • 自动完整性保护与 app bundle 的代码透明性不兼容,因为完整性保护涉及到修改代码。如果在启用自动完整性保护功能的情况下上传实现代码透明性的 app bundle,该 app bundle 将被拒绝。
  • 此保护服务不涵盖免安装体验。若要获得保护,发布轨道中的 app bundle 就不能支持免安装体验。您可以向常规发布轨道中上传受保护的 app bundle,同时向免安装版专用轨道中上传不受保护的支持免安装体验的 app bundle。
第 1 步:开启保护功能

按照“准备和发布版本”的第 1 步中所述的方法创建发布版本。

您可以在创建版本时开启保护功能(如准备和发布版本第 2 步中所述),也可以在应用完整性页面(发布版本 > 应用完整性)中开启保护功能,该页面包含可帮助您确保用户以您预期的方式来体验应用和游戏的完整性和签名服务

准备发布版本时,您会看到一个显示获取完整性保护管理完整性保护的按钮。然后,您可以在“自动完整性保护”下方点击是,开启,以开启完整性保护。随后 Google Play 会为您的应用版本签名,并添加完整性保护,从而限制篡改应用和未经授权分发应用的行为。这表明自动完整性保护功能已开启。

完成版本准备工作,然后保存您所做的更改。

第 2 步:测试受保护的应用

通过各个测试轨道测试受保护的应用版本,以确保该功能不会对用户体验或性能产生意外影响。

我们建议您在测试评估项目中添加以下操作:

  • 测试游戏的启动过程,看看是否会出现启动时发生崩溃以及启动速度减慢的问题。
  • 测试您的原生代码 (C/C++) 回调至 Java(在您自己的代码库或第三方代码库中)的情况,例如广告、日志记录、社交集成、身份验证,或者权限处理等 Android 专用功能。

如果您在测试过程中发现问题,可以选择还原到可能已在上一版本中使用过的旧版自动完整性保护功能,也可以关闭自动完整性保护功能。我们建议您不要将未受保护的版本推进到开放式轨道或正式版轨道。

如需为单个版本关闭完整性保护功能,请按以下步骤操作:

  1. 准备发布版本时,点击管理完整性保护
  2. 在“自动完整性保护”下方,选择旧版保护功能为此版本关闭保护
  3. 保存您所做的更改。所做更改将应用于此版本。当您下次上传版本时,该版本将再次获得最强的新版保护。
第 3 步:将应用推进到正式版轨道

准备就绪后,您可以在 Play 管理中心将版本发布到正式版轨道,从而面向所选国家/地区的所有 Google Play 用户发布受保护的应用。

自定义用户通过完整性保护对话框访问的商品详情

如果用户通过非官方渠道获取您的应用,自动完整性保护功能会提示用户通过 Google Play 获取您的应用。当用户点按该对话框时,系统会将用户重定向到您的商品详情页面,用户可以在该页面中点按“安装”(或者“购买”或“更新”)按钮从 Play 获取您的应用,从而将应用添加到用户的 Play 内容库。

您可以为点按完整性保护对话框的所有访问者自定义商品详情资源,包括应用的名称、图标、说明和图形资源。若要自定义用户通过完整性保护对话框访问的商品详情,请执行以下操作:

  1. 打开 Play 管理中心,然后前往应用完整性页面(发布版本 > 应用完整性)。
  2. 滚动到“Play Integrity API”部分。
  3. 点击设置
  4. 滚动到“自定义商品详情”部分。
  5. 点击创建商品详情
  6. 按照创建自定义商品详情页面上的说明操作,然后点击保存

或者,您也可以直接在自定义商品详情页面中为完整性保护对话框创建自定义商品详情:

  1. 打开 Play 管理中心,然后前往自定义商品详情页面(拓展 > 自定义商品详情)。
  2. 点击创建商品详情,选择“创建新商品详情”或“复制现有商品详情”,然后点击下一步
  3. 在“商品详情”部分中,滚动到目标受众群体
  4. 选择按网址,然后在文本框中输入“playintegrity”。
  5. 填写所有其他详细信息,然后点击保存

提示:网址参数“playintegrity”是专为完整性深层链接预留的特殊关键字,因此在设置自定义商品详情时,您必须按原样输入该参数,且不得更改。

推荐做法

不发布未受保护的应用版本

如果您将未受保护的版本发布到开放式轨道,或通过 Google Play 之外的其他渠道发布此类版本,应用保护机制将失去应有的作用。为了让应用的完整性保护功能正常发挥作用,只有受保护的应用版本才适合发布到开放式轨道和正式版轨道。

混用防篡改解决方案时需小心谨慎

自动完整性保护可能与其他运行时防篡改解决方案不兼容,因此如果您尝试同时使用这些解决方案,可能会导致用户遇到问题。如果您已在应用中实现了 Play 许可服务,则应停用“必须从 Google Play 安装”。如果您的应用会执行其他运行时检查,请务必先对受保护应用进行全面测试,然后再将应用发布到开放式轨道。

测试受保护的应用

Google Play 会自动在所有轨道分发受保护的 build:内部测试轨道、封闭式轨道、开放式轨道和正式版轨道。您应该照常对这些版本进行全面测试。

如果您将应用的 build 直接上传到内部应用分享部分,Google Play 不会添加保护。这是为了让您可以通过内部应用分享功能上传调试 build 及其他类似 build。

如果您在 App bundle 资源管理器中访问某个受保护应用版本的内部应用分享链接,系统会原样分享经过 Google Play 处理的相应 build。如果该应用版本已上传到测试轨道并受保护,则您访问 App bundle 资源管理器中的内部应用分享链接时,系统会提供受保护的版本。您可以在 App bundle 资源管理器的详细信息标签页中查看保护状态。

监控崩溃问题

如果您发现应用的崩溃次数有所增多,这可能是由于应用保护机制发挥作用而导致的;这可能表明自动完整性保护功能在正常运行。如果攻击者试图修改您的应用,但未成功,运行时检查会让该应用停止运行,而这主要通过让应用崩溃来实现。

未归因于 Google Play 的崩溃不会影响您的 Android Vitals 稳定性指标。如果您使用其他工具分析崩溃情况(例如 Crashlytics),并且需要通过软件包名称来按安装来源过滤,Google Play 商店的软件包名称为“com.android.vending”。

如果您担心崩溃次数增多,产生了负面影响,可以向我们报告崩溃情况,并提供尽可能详细的信息。我们的团队会进行调查。如果我们确定崩溃情况与保护机制有关,便会回复您。

举报遭破解的应用版本

破解版本是指在以下情况下仍可运行的版本:经过了修改在您要求只能通过 Google Play 安装的情况下,有人通过 Google Play 之外的其他渠道安装了该版本。

如果您发现应用的破解版本,可以向我们举报

相关内容

该内容对您有帮助吗?

您有什么改进建议?
搜索
清除搜索内容
关闭搜索框
主菜单
9807509178392221349
true
搜索支持中心
true
true
true
true
true
92637
false
false