1.将Unity-Player-Other Settings设置
Api Compatibillity Level* = .NET 4.X
在编辑器上运行相关代码从阿里云桶中下载文件,正常没有任何问题
2.将项目打包出android运行之后,报错如下
2023-10-20 20:50:52.373 1553-2042/? I/WifiStateMachine: checkScoreBasedQuality - mPreviousScore[0]:92 mPreviousScore[1]:93 mPreviousScore[2]:94 s2Score:94mPrevoiusScoreAverage:93
2023-10-20 20:50:52.385 11799-11893/? E/Unity: NullReferenceException: Object reference not set to an instance of an object.
at Aliyun.OSS.Common.Communication.HttpExtensions.AddInternal (System.Net.WebHeaderCollection headers, System.String key, System.String value) [0x00000] in <00000000000000000000000000000000>:0
at Aliyun.OSS.Common.Communication.HttpFactory.SetRequestHeaders (System.Net.HttpWebRequest webRequest, Aliyun.OSS.Common.Communication.ServiceRequest serviceRequest, Aliyun.OSS.Common.ClientConfiguration configuration) [0x00000] in <00000000000000000000000000000000>:0
at Aliyun.OSS.Common.Communication.HttpFactory.CreateWebRequest (Aliyun.OSS.Common.Communication.ServiceRequest serviceRequest, Aliyun.OSS.Common.ClientConfiguration configuration) [0x00000] in <00000000000000000000000000000000>:0
at Aliyun.OSS.Common.Communication.ServiceClientImpl.SendCore (Aliyun.OSS.Common.Communication.ServiceRequest serviceRequest, Aliyun.OSS.Common.Communication.ExecutionContext context) [0x00000] in <00000000000000000000000000000000>:0
at
2023-10-20 20:50:52.386 657-14296/? D/qc_adm: ns 3524636 > expected_ns 3000000 (skipped 3)
2023-10-20 20:50:52.406 657-14296/? D/qc_adm: ns 3516251 > expected_ns 3000000 (skipped 3)
2023-10-20 20:50:52.414 657-14296/? D/qc_adm: ns 3500157 > expected_ns 3000000 (skipped 3)
2023-10-20 20:50:52.436 1030-1208/? D/DnsProxyListener: DNSDBG::dns addrinfo af 2
原因:
1.通过查看源码增加打印测试得知,在android环境中,Environment.OSVersion.Platform识别成了
Environment.OSVersion.Platform=PlatformID.Unix;
最后导致
_isMonoPlatform = MonoPlatforms.Contains(Environment.OSVersion.Platform);
_isMonoPlatform = true;
后续的赋值导致_addInternalMethod = null;
解决方案:
1.注释HttpExtensions.MonoPlatforms变量中的PlatformID.Unix
2.选中 aliyun-oss-sdk项目重新生成dll
3.拷贝 D:\unityWork\aliyun-oss-csharp-sdk-2.13.0\sdk\bin\Debug\Aliyun.OSS.dll覆盖到项目中
4.出android包测试成功
根据您提供的错误信息,看起来您在运行 Unity2020 打包的 Android 包时,遇到了 NullReferenceException 错误。这个错误通常是因为您在运行时引用了一个未初始化的对象。从错误信息中,我们可以看到在 Aliyun.OSS.dll 中,有一个名为 HttpExtensions 的类,该类中的 AddInternal 方法在执行时出现了 NullReferenceException 错误。这可能是因为在运行时,该方法的某个参数未正确初始化。要解决这个问题,您需要检查 HttpExtensions 类中的 AddInternal 方法的参数,确保它们在运行时都已正确初始化。
这个问题可能是由于Aliyun.OSS.dll与Unity2020的兼容性问题导致的。你可以尝试以下方法解决这个问题:
确保你的项目使用的是.NET 4.X框架。在Unity编辑器中,选择File -> Build Settings,然后在Player Settings中将Api Compatibility Level设置为.NET 4.X。
清理并重新构建项目。在Unity编辑器中,选择File -> Clean Project,然后选择File -> Build Settings,最后点击Build按钮进行构建。
如果问题仍然存在,尝试将Aliyun.OSS.dll文件复制到Unity项目的Plugins文件夹中。确保该文件夹位于Assets文件夹内。
如果以上方法都无法解决问题,可以考虑使用其他支持.NET 4.X的阿里云SDK替代Aliyun.OSS.dll。
如果你在Unity2020中打包Android包后,运行Aliyun.OSS.dll时失败,可能有以下几种原因:
如果以上方法都无法解决问题,你可能需要查阅相关的文档或者寻求专业的技术支持。
根据您提供的错误信息,问题可能出在Aliyun.OSS.dll与Unity的兼容性上。请尝试以下解决方案:
确保您的项目使用的是正确的Aliyun.OSS.dll版本。您可以在阿里云官方文档中查找适用于您的项目的SDK版本。
检查您的项目是否使用了正确的API密钥和访问密钥。确保这些密钥与您在阿里云控制台中设置的一致。
检查您的项目是否使用了正确的区域设置。您可以在阿里云控制台中查看支持的区域列表,并根据您的需求选择合适的区域。
Unity2020打包android包后,运行Aliyun.OSS.dll失败的可能原因有以下几种:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
对象存储 OSS 是一款安全、稳定、高性价比、高性能的云存储服务,可以帮助各行业的客户在互联网应用、大数据分析、机器学习、数据归档等各种使用场景存储任意数量的数据,以及进行任意位置的访问,同时通过丰富的数据处理能力更便捷地使用数据。