Android Unity3d和VUForia与Digimarc。无法初始化!您的硬件不支持此应用程序

时间:2017-06-15 06:33:54

标签: android unity3d vuforia

我正在开发一个AR应用程序,我使用Unity与VUForia运行AR场景。 Unity AR部分是使用Unity插件开发的,我将此插件与Android Studio Project集成在一起。 Android项目还使用Digimarc SDK来识别SKU。 现在的问题是,当我运行与Digimarc集成的完整项目时,我从Unity获得错误:无法初始化!您的硬件不支持。 但是,如果我从项目中删除Digimarc SDK,Unity部分运行完美。

1 个答案:

答案 0 :(得分:1)

经过2天的研究,我发现了这个问题的根本原因和解决方案。

问题:

Android中有多种硬件架构,如“armeabi-v7a”,“arm64-v8a”和“x86”。 大多数Android设备支持多种架构。 当应用程序使用本机库时,它提供本机库,用于支持各个文件夹中的体系结构,如lib / armeabi-v7a /和lib / arm64-v8a等。 Android设备的操作系统在编译时检查提供的本机库文件夹,并复制最兼容的文件夹并保留其他文件夹。 在我的例子中,VUForia SDK仅为“armeabi-v7a”架构提供本机库,但Digimarc SDK为“armeabi-v7a”,“arm64-v8a”和“x86”提供本机库。 现在,当我将Unity + vuforia only app安装到设备时,因为它只有“armeabi-v7a”文件夹,设备从这里复制libs并且应用程序正常运行。 但是当我们安装完整的应用程序同时集成了unity + vuforia和Digimarc时,应用程序包确实包含所有3个架构的合并文件夹,但VuForia库仅在“armeabi-v7a”文件夹中可用,其余2包含digimarc的仅限libs,它们没有VUForia的库。 现在复制“arm64-v8a”或“x86”库的设备将找不到VUforia所需的库,我们在这些设备上看到硬件不支持错误。

解决方案:

首先,我试图为“arm64-v8a”和“x86”寻找VUForia库,但是无法找到。 然后我尝试从“armeabi-v7a”文件夹中复制VUforia库并粘贴在“arm64-v8a”和“x86”文件夹中,但是当我尝试运行该应用程序时,它与所提供的库不是为了抱怨而崩溃了正确的架构。 最后,我从digimarc的“dms.aar”文件中删除了“arm64-v8a”和“x86”文件夹,并将其重命名为“dms_armeabi-v7a_only.aar”,并将原始的“dms.aar”替换为“dms_armeabi-v7a_only.aar”在项目中 我尝试在我可以访问的所有设备上运行该应用程序,该应用程序适用于digimarc和Unity + Vuforia页面。