【说明】本文主要是针对关联账号被封的问题,首次被封的问题就不讨论了。
作为游戏从业者,如果面对的是海外市场,不可避免地要和Google打交道。很多朋友都会碰到Google开发者账号被封的情况,然后不管以后怎么处理,都还是会被关联账号。尤其是2018.6月份以来,Google封禁的力度和技术水平提升了不少。
在踩过很多坑以后,我觉得有必要总结一下我们踩过的坑,给其它朋友作为参考。
Google封禁关联账号,主要是从两块着手的。
Google开发者账号的申请
1.1 申请Google开发者账号用的PC
基本原则:一台PC对应一个Google开发者账号。
【最优选择】更换一台全新的PC+香港VPN(之前没用过的)
【保底选择】找一个修改PC信息的工具,我用的是:牛B硬件信息修改大师,用这个工具可以一键修改PC的主要信息,其中尤其重要的是网卡的MAC地址,这个一定要仔细检查。
【踩过的坑】一台PC登录过其他Google开发者账号,忘记清除登录信息了,结果悲剧了。
【踩过的坑】我们当时想走捷径,想直接用阿里云在香港的windows云服务器去申请,这样可以省去VPN的费用。
我们发现第一次申请时账号没问题,等到这个账号被封,我们更换了windows云服务器的IP地址和操作系统,想再去申请,发现总是被封。
我们猜测是云服务器被Google记录了,具体是通过记录哪些信息来识别的,还不太清楚。
1.2 申请Google开发者账号用的支付账号
【最优选择】真实的信用卡,一个信用卡只用来支付一个账号的费用。
【保底选择】第三方虚拟信用卡平台,我们用的是全球付。和信用卡一样,一个虚拟信用卡只用来支付一个账号的费用。
1.3 其它
每个Google开发者账号都要对应一套全新的信息。除了上面说的PC和支付账号外,还包括:
手机号
隐私权网址:我们这边是先随便乱填一个,等Google找我们时再填一个正确的。
开发者个人和住址信息
很多朋友在游戏被封时,不知道是账号的问题,还是包的问题。其实验证的方法很简单:
写一个helloworld,单机版的就可以,直接以游戏品类提交,如果通过就说明账号ok。
【注意】一定是以你之前的游戏品类提交,千万别提交工具类,工具类的秒过,不审的!
另一个验证方式:看Google有没有登录过你的游戏,登录过就表示账号ok。
- 提交到Google上的的apk
2.1 静态马甲包
就是指新提交的包和以前被封的包存在相似的地方,被Google检查出来了,这种是纯静态检测,即我们自己解压apk包就能看到的东西。具体包含哪些呢?
2.1.1 Android aar包
Unity游戏必然要引入各种Android aar包,这些包里面一般都是第三方公共的SDK,看起来应该没问题。
【踩过的坑】我们就往aar包加了一个自己的类,结果就被封了。移除这个类就没事,血的教训啊!!
【最优选择】从0开始导入第三方的SDK,如果自己要新加类,麻烦更换类名和包名,不要和之前提交的一样。
【保底选择】找个第三方加固工具(比如360的应用加固),加固一下apk。
2.1.2 资源包,也就是apk解压后assetsbinData下的文件(以Unity工程为例)
【猜测】Google是通过比较文件名和文件内容的相似度来判断两个包是否是马甲包。
不管你是用mono方式打包,还是IL2CPP方式打包,这个目录下会有一大堆用hash值命名的二进制文件,hash值来源于原始的文件名,这意味着如果两个apk里面有大量的二进制文件同名,那么对应的也就会有大量的实体资源文件同名,这个很危险。
【最优选择】把用到的资源单独打一个AssetBundle包,并对这个包进行加密(简单的按位取反就行),这样就不会有太多二进制文件暴露在assetsbinData目录下了。
这个最优选择也有个问题,就是如果这次提的包被封了,下次提的包AssetBundle文件就和这次相同了,解决方法就是换一种加密方式。
2.2 服务器网络
如果你提交的包被封了,那么下次提交时一定要更换服务器的IP地址和域名。
【踩过的坑】很多同学可能不知道,自己游戏的HTTP请求是明文的,就是客户端发送给服务器的HTTP请求把服务器的域名写的很清楚,Google会毫不客气地封掉这个域名。
所以光换IP地址,不换服务器域名,是没有用的,没有用的,没有用的!
2.3 代码(针对Unity工程)
这个没啥好说的,直接用IL2CPP方式打包。
如果你坚持用mono打包,也可以,自己修改一下libmono.so,实现对dll的加密就行。