问题形容

咱们我的项目集成了华为联机对战SDK,在应用华为联机对战SDK外部办法时须要先调用联机对战初始化办法Client.Init初始化华为联机对战SDK。咱们调用这个办法之后在Unity Editor外面运行我的项目,初始化办法能够调用胜利,然而打包成apk在Android手机上运行时,初始化办法调用不胜利,返回错误码1001。

参考文档:初始化SDK

问题剖析

查看华为官网的错误码文档,对1001错误码的解释是:申请参数谬误,请查看接口申请参数。

然而,若是申请参数谬误,在Unity Editor里也应该拜访不胜利才对。不分明是哪里出问题了,分割了华为技术反对,技术支持问咱们:

  1. 有没有在调用初始化办法之前设置证书门路和日志打印门路:

    查看之后发现,曾经加上了。

  2. 打包时用的是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文件夹下。

  3. 咱们应用了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的初始化办法,问题胜利解决。