为 arm 64 位构建时缺少 DLL"arcore-camera-utility"(适用于 32 位)



我的AR应用程序在Google Play商店中运行良好,但我不得不进行一些小的UI调整,当我尝试在商店中更新时,我遇到了新的64位要求。我能够重新安装我使用的所有第三方 Unity 库来修复几乎所有问题,除了一个 DLL 问题。在 il2cpp 构建的 arm 32 位版本中一切正常,但如果我添加对 64 位的支持,它会中断。AR有点工作,但对象放置很远。

如果我从 Assets\GoogleARCore\Examples\ComputerVision\Plugins 目录中单击"libarcore_camera_utility.so",在 Unity 编辑器中,它让我选择要针对 32/64 的 CPU,(由于某种原因不是两者兼而有之(我可以将其切换到 64,但我仍然收到 DLL 未找到错误,即使它似乎在 APK 的正确目录中。(我也尝试将文件移动到资产\插件\Android\libs(arm64-v8a 和 armeabi-v7a(,如果我包含 64 位作为目标,仍然会收到 DLL 错误。(如果仅选择32位,则一切正常(

如果我在损坏的 64 位版本上运行 logcat,则会出现错误:

DllNotFound异常:无法加载 DLL"arcore_camera_utility":找不到指定的模块。 at UnityARInterface.ARCoreInterface.TextureReader_create (Int32 格式, Int32 宽度, Int32 高度, 布尔保持纵横比( [0x00000] in at UnityARInterface.ARCoreInterface+c__Iterator0.MoveNext (( [0x00000] in at UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress( [0x00000] in :0

文件"arcore_camera_utility.so"似乎是罪魁祸首,因为如果我只为 32 位构建并删除此文件,我会收到与 64 位版本相同的错误消息和行为。

事实上,我确实需要按照评论中建议的 Proxytype 自行编译它。在这个问题的答案中,我有关于如何编译自己的完整说明:如何在NDK-BUILD中构建arcore camera_utility共享库?

最新更新