GooglePlay篇 — (3) 离线配置

Posted by Xun on Wednesday, July 7, 2021

谷歌unity的登录和IAP支付插件,很多设置需要在联网状态下进行,离线状态下,不能直接应用,需要进一步进行处理。

踩坑点

  1. UnityEditor.Purchasing.dll:编辑器下的工具库,会自动对 UnityEngine.Purchasing.dll 的平台环境进行设置,需要在Service视窗里进行开关设置。

**存在问题:**默认情况下会关闭Editor平台,所以编辑器下不能正常调用对应的类和方法。自行设置后,重新导入后会被重置,出现编译报错。关闭此dll的话会引起其他引用丢失,同样会有编译报错。 **解决方法:**将IAP的package移到Packages文件夹下,修改 UnityEngine.Purchasing.dll.meta 里的guid,防止被自动检测修改设置,然后自行设置所需的平台。

  1. Play Services Resolver 机制:谷歌为unity提供的管理项目的库的机制,能防止库的多版本引用冲突。

**存在问题:**编译成功等多种情况下会触发,触发的时候会删除本地所有带有Gspr标签的库,然后根据 **Dependences.xml重新从远程仓库拉取整合,离线状态下则只能进行删除操作,并不能重新生成,导致库丢失。 **解决方法:**关闭此项机制。 1.png 2.png

  1. **安卓库管理:**引入多方插件的时候容易产生库冲突,需要自行维护所有相关的安卓库

**存在问题:**本人测试出现tpns-release.aar里的华为相关库和android-support-v4.jar里的部分类重复或冲突。 **解决方法:**删除tpns-release.aar,删除android-support-v4.jar里的部分重复类,但这是临时方案,后续需要进行系统的规划。

后续操作

  1. 新增或删除第三方插件时,需要导入渠道sdk的接入工程里编译,检查是否会有冲突的,重新生成渠道的配置。
  2. 更换正式的谷歌配置信息时,需要重新生成配置文件。
  3. 谷歌相关的所有资源,需要剥离出去,构建的时候再拷贝回去,总共有以下几项

Project/Assets/Scripts/SDK/Channel/Agent/ChannelAgentGooglePlay.cs (渠道的调用代码) Project/Assets/ExternalDependencyManager/ (后续考虑移除此部分模块,不使用Resolver) Project/Assets/GooglePlayGames/ Project/Assets/Plugins/ Project/Packages/com.unity.purchasing@2.0.3/ Project/ProjectSettings/AndroidResolverDependencies.xml Project/ProjectSettings/GvhProjectSettings.xml Project/ProjectSettings/GooglePlayGameSettings.xml

  1. 构建线配合需求:

回滚工程,删除非版本文件,包括非Assets文件夹下的文件 按渠道划分,构建时拷贝渠道的文件到对应的目录下 游戏包的初始配置,VersionConfig的相关配置信息设置,后续应该会扩展,目前需要:

mStartPlatformType(启动平台类型) mTargetPlatformTypes(所有目标类型平台) mLoginIp(登录服ip) mLoginPort(登录服端口)