我有一个移动应用程序项目,它在Android上构建得很流畅,没有任何错误。但是,当我试图将它构建到一个iOS设备时,我在Xcode中得到了这个错误:
Unable to find internal function `UnityEngine.Jobs.TransformAccess::GetWorldToLocalMatrix`
Unity.Burst.BurstCompilerHelper:IsCompiledByBurst(Delegate)
Unity.Burst.BurstCompilerHelper:.cctor()
Unity.Burst.BurstCompiler:Compile(T, Boolean)
Unity.Entities.ComponentSystemGroup:.cctor()
Unity.Entities.InitializationSystemGroup:.ctor()
System.Reflection.MonoCMethod:InternalInvoke(Object, Object[])
System.Activator:CreateInstance(Type, Boolean)
Unity.Entities.TypeManager:ConstructSystem(Type)
Unity.Entities.World:CreateSystemInternal(Type)
Unity.Entities.World:GetOrCreateSystem()
Unity.Entities.DefaultWorldInitialization:AddSystemToRootLevelSystemGroupsInternal(World, IEnumerable`1, Int32)
Unity.Entities.DefaultWorldInitialization:Initialize(String, Boolean)
Unity.Entities.AutomaticWorldBootstrap:Initialize()
统一将项目构建成Xcode,Xcode似乎也将项目构建到设备上,但是当它在设备上运行时,它会抛出此错误并崩溃……我试着在互联网上查找不同的解决方案,我找到了一些链接,但到目前为止,这些都没有奏效:
https://forum.unity.com/threads/solved-unable-to-find-internal-function.777044/ https://forum.unity.com/threads/unable-to-find-internal-function-with-transport-library-on-ios.731471/
你知道什么可能会导致这个错误吗?顺便说一下,我使用的是Unity2020.2.1f1
如果我在“开发构建”(Development)的支持下构建该项目,则编辑更新在IL2CPP、Android和iOS上正常运行。但是,如果我取消了开发构建,它就会像以前一样崩溃,无论是在Android还是iOS IL2CPP构建上。真奇怪。这方面有什么可能的信息吗?在Android上建立同样的项目也很顺利.在我看来,这是一个代码剥离错误,我尝试了以下解决方案:
packages
到目前为止,这些都不起作用。:(
我还在资产文件夹中添加了一个link.xml文件,如下所示
<linker>
<assembly fullname="Unity.Collections" preserve="all" />
<assembly fullname="Unity.Collections.Tests" preserve="all" />
<assembly fullname="Unity.Burst.Tests" preserve="all" />
<assembly fullname="Unity.Transforms" preserve="all" />
<assembly fullname="Unity.Transforms.Hybrid" preserve="all" />
<assembly fullname="Unity.Transforms.Tests" preserve="all" />
<assembly fullname="Unity.Jobs" preserve="all" />
<assembly fullname="Unity.Jobs.Tests" preserve="all" />
<assembly fullname="Unity.Burst" preserve="all" />
<assembly fullname="UnityEngine">
<type fullname="UnityEngine.*" preserve="all"/>
<type fullname="UnityEngine.Jobs.*" preserve="all"/>
<type fullname="UnityEngine.Jobs.TransformAccess.*" preserve="all"/>
</assembly>
</linker>
发布于 2021-05-26 17:17:35
经过近一周的挣扎和大量调试,我发现了这个问题。简而言之,崩溃是由Unity.Entities 0.17.0-preview.41
包造成的。(参考文献https://docs.unity3d.com/Packages/com.unity.entities@0.17/manual/index.html)
即使在IL2CPP脚本上构建了一个空项目,后端+ Development也未被选中,并且安装了上述实体预览包,该应用程序也会崩溃,您可能会得到与我相同的错误。
我不知道这是否是代码剥离错误,但我发现了一件奇怪的事情,如果启用了实体预览包,那么它是脚本执行顺序中的第一个(您可以在Project中签入该顺序),这可能会导致缺少一个内部函数的问题。(由于实体包依赖于UnityEngine.Jobs.TransformAccess,但实体包首先执行,它还找不到乔布斯,这是我的逻辑,但如果我错了,请纠正我。)
我仍然不知道为什么我一开始就安装了这个包,因为我甚至没有在这个项目中使用它,所以删除它解决了我所有的问题,这个项目现在运行顺利。也许这会对将来有类似问题的人有所帮助。作为结论,我能说的是:
packages.
https://stackoverflow.com/questions/67515444
复制相似问题