开发者社区 > 云存储 > 对象存储OSS > 正文

Unity2020打包android包后,运行Aliyun.OSS.dll失败

1.将Unity-Player-Other Settings设置
Api Compatibillity Level* = .NET 4.X
企业微信截图_16980221645440.png
在编辑器上运行相关代码从阿里云桶中下载文件,正常没有任何问题

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

展开
收起
啊蹦蹦 2023-10-23 08:55:28 210 0
6 条回答
写回答
取消 提交回答
  • 原因:
    1.通过查看源码增加打印测试得知,在android环境中,Environment.OSVersion.Platform识别成了
    Environment.OSVersion.Platform=PlatformID.Unix;
    最后导致
    _isMonoPlatform = MonoPlatforms.Contains(Environment.OSVersion.Platform);
    _isMonoPlatform = true;
    后续的赋值导致_addInternalMethod = null;
    企业微信截图_16982042452288.png

    解决方案:
    1.注释HttpExtensions.MonoPlatforms变量中的PlatformID.Unix
    企业微信截图_16982044013076.png
    2.选中 aliyun-oss-sdk项目重新生成dll
    3.拷贝 D:\unityWork\aliyun-oss-csharp-sdk-2.13.0\sdk\bin\Debug\Aliyun.OSS.dll覆盖到项目中
    4.出android包测试成功

    2023-10-25 11:47:41
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    根据您提供的错误信息,看起来您在运行 Unity2020 打包的 Android 包时,遇到了 NullReferenceException 错误。这个错误通常是因为您在运行时引用了一个未初始化的对象。从错误信息中,我们可以看到在 Aliyun.OSS.dll 中,有一个名为 HttpExtensions 的类,该类中的 AddInternal 方法在执行时出现了 NullReferenceException 错误。这可能是因为在运行时,该方法的某个参数未正确初始化。要解决这个问题,您需要检查 HttpExtensions 类中的 AddInternal 方法的参数,确保它们在运行时都已正确初始化。

    2023-10-23 13:31:34
    赞同 展开评论 打赏
  • 这个问题可能是由于Aliyun.OSS.dll与Unity2020的兼容性问题导致的。你可以尝试以下方法解决这个问题:

    1. 确保你的项目使用的是.NET 4.X框架。在Unity编辑器中,选择File -> Build Settings,然后在Player Settings中将Api Compatibility Level设置为.NET 4.X。

    2. 清理并重新构建项目。在Unity编辑器中,选择File -> Clean Project,然后选择File -> Build Settings,最后点击Build按钮进行构建。

    3. 如果问题仍然存在,尝试将Aliyun.OSS.dll文件复制到Unity项目的Plugins文件夹中。确保该文件夹位于Assets文件夹内。

    4. 如果以上方法都无法解决问题,可以考虑使用其他支持.NET 4.X的阿里云SDK替代Aliyun.OSS.dll。

    2023-10-23 12:42:14
    赞同 展开评论 打赏
  • 如果你在Unity2020中打包Android包后,运行Aliyun.OSS.dll时失败,可能有以下几种原因:

    1. DLL文件路径不正确:请确保你已经将Aliyun.OSS.dll文件正确地添加到你的项目中,并且它的路径是正确的。
    2. 缺少依赖项:Aliyun.OSS.dll可能依赖于其他的.NET Framework库,如果你没有安装这些库,可能会导致运行时错误。你可以尝试在Unity的“Player Settings”中检查并添加这些库。
    3. 环境变量问题:请确保你的Android设备的环境变量设置正确。你可以尝试在Unity的“Player Settings”中检查并添加这些环境变量。

    如果以上方法都无法解决问题,你可能需要查阅相关的文档或者寻求专业的技术支持。

    2023-10-23 11:26:16
    赞同 展开评论 打赏
  • 根据您提供的错误信息,问题可能出在Aliyun.OSS.dll与Unity的兼容性上。请尝试以下解决方案:

    1. 确保您的项目使用的是正确的Aliyun.OSS.dll版本。您可以在阿里云官方文档中查找适用于您的项目的SDK版本。

    2. 检查您的项目是否使用了正确的API密钥和访问密钥。确保这些密钥与您在阿里云控制台中设置的一致。

    3. 检查您的项目是否使用了正确的区域设置。您可以在阿里云控制台中查看支持的区域列表,并根据您的需求选择合适的区域。

    2023-10-23 10:31:29
    赞同 展开评论 打赏
  • Unity2020打包android包后,运行Aliyun.OSS.dll失败的可能原因有以下几种:

    • Aliyun.OSS.dll文件不兼容或缺少依赖。可以尝试官网载最新版本的SDK,并将Aliyun.OSS.dll文件放入Unity项目中。也可以检查是否安装了Newtonsoft.Json.dll和log4net.dll等依赖库。
    • Unity的Gradle模板配置不正确。需要在Unity的安装目录下,找到PlaybackEngines/AndroidPlayer/Tools/GradleTemplates/baseProjectTemplate.gradle文件,并修改其中的repositories部分,将google()和jcenter()替换为阿里云的源。
    2023-10-23 09:35:36
    赞同 2 展开评论 打赏
滑动查看更多

对象存储 OSS 是一款安全、稳定、高性价比、高性能的云存储服务,可以帮助各行业的客户在互联网应用、大数据分析、机器学习、数据归档等各种使用场景存储任意数量的数据,以及进行任意位置的访问,同时通过丰富的数据处理能力更便捷地使用数据。

相关产品

  • 对象存储
  • 热门讨论

    热门文章

    相关电子书

    更多
    58同城Android客户端Walle框架演进与实践之路 立即下载
    Android组件化实现 立即下载
    蚂蚁聚宝Android秒级编译——Freeline 立即下载