共计 1159 个字符,预计需要花费 3 分钟才能阅读完成。
问题形容
咱们我的项目集成了华为联机对战 SDK,在应用华为联机对战 SDK 外部办法时须要先调用联机对战初始化办法 Client.Init 初始化华为联机对战 SDK。咱们调用这个办法之后在 Unity Editor 外面运行我的项目,初始化办法能够调用胜利,然而打包成 apk 在 Android 手机上运行时,初始化办法调用不胜利,返回错误码 1001。
参考文档:初始化 SDK
问题剖析
查看华为官网的错误码文档,对 1001 错误码的解释是:申请参数谬误,请查看接口申请参数。
然而,若是申请参数谬误,在 Unity Editor 里也应该拜访不胜利才对。不分明是哪里出问题了,分割了华为技术反对,技术支持问咱们:
有没有在调用初始化办法之前设置证书门路和日志打印门路:
查看之后发现,曾经加上了。
打包时用的是 IL2CPP?还是 Mono?可在 Unity 中“File > Build Settings… > Player Settings… > Scripting Backend”处查看。查看之后发现咱们用的是 IL2CPP。技术支持示意目前联机对战 SDK 还不反对 IL2CPP,改成 Mono 试一下。改成 Mono 之后初始化还是报错:
这个异样,参考了这个帖子解决了:华为联机对战服务 Unity SDK 初始化接口报错:鉴权失败,Operation is not supported on this platform,然而又有了一个新的异样,返回错误码 -1:
错误码文档中的解释是:服务端解决失败。
持续征询华为技术反对,通过一直的沟通尝试,最初定位到问题起因是:华为联机对战 SDK 外部应用 System.Net.Http.WebRequest.dll 内的办法实现网络申请,而咱们我的项目中没有这个 dll,只能应用 Unity 自带的 api 来实现网络申请,找不到联机对战 SDK 外部须要的办法,所以就呈现了异样。咱们倡议华为能够应用 Unity 的 api,这样兼容性会更好。华为技术反对示意他们用不了 Unity 的 api。所以倡议咱们下载 4.5 以上版本的 System.Net.Http.WebRequest.dll 放在我的项目的 Plugins 文件夹下。
咱们应用了 System.Net.Http.WebRequest.dll 之后,在手机上运行仍然报错:
华为技术反对让咱们查看 Unity 中“File > Build Settings… > Player Settings… > Managed Stripping Level”配置的是不是 Disabled,如果不是,须要改成 Disabled。
问题解决
咱们应用了 System.Net.Http.WebRequest.dll 并且把 Managed Stripping Level 改成 Disabled 之后,打包 apk 在手机上运行,能够胜利调用华为联机对战 SDK 的初始化办法,问题胜利解决。