menu

Android 11上游戏签名需要注意的问题(是否包含V2签名)

最近碰到有游戏签名后出现安装不了的问题。如下图所示:

出现此问题的手机系统都是Android 11。拿到该游戏解析apk信息,targetSdkVersion值为30。这是一个目前比较多发的不带V2签名导致在特定环境下无法安装的问题。

鉴于很多游戏对于Android的签名相关的情况不是特别了解,这里就Android的签名逻辑整理出此文档。

Android 目前存在2种签名,一种是V1签名,另一种是V2签名。

V1签名跟Jar包签名一样。缺点是校验速度比较慢,另外有些zip信息无法得到校验,于是从7.0开始引入V2签名。

7.0之前的系统只能识别V1签名。7.0到10.0的系统同时支持V1和V2签名,优先使用V2签名。这个阶段只做V1签名在使用和分发上,都跟之前一样,没有任何问题。甚至于国内有些游戏渠道指定要求游戏包只能包含V1签名,不能带V2签名。

到了2020年Android 11发布后,情况出现了变化。下图是Google新政策的原文:

315_8

在Android 11上,如果targetSdkVersion为30或以上的话,应用就无法安装了。如果targetSdkVersion低于30,不存在这个问题。

不过Unity引擎默认会使用最新的targetSdkVersion,有些游戏在不知情的情况下,targetSdkVersion被自动设置为30,导致在没有使用V2签名的情况下无法安装。

Google在2021年8月开始,将强制所有新应用使用targetSdkVersion为30或更高。如下图所示:

315_9

因此以后游戏发布,建议使用V1+V2签名。目前FairGuard加固签名工具已设置为默认使用V1+V2签名的方式。

FairGuard 专注于游戏加固与反外挂,致力于打造业界顶尖的游戏保护方案。

研发了 SO 无导入函数加壳、iOS AB 资源加密、虚拟机底层指纹检测等多项独家保护功能。目前已被 FunPlus、三七互娱、游族等多家头部游戏公司采用。