【问题标题】:Android Unity3d and VUForia with Digimarc. Failure to initialize! Your hardware does not support this applicationAndroid Unity3d 和 VUForia 与 Digimarc。初始化失败!您的硬件不支持此应用程序
【发布时间】:2017-06-15 06:33:54
【问题描述】:
我正在开发一个 AR 应用程序,我在其中使用 Unity 和 VUForia 来运行 AR 场景。 Unity AR 部分是使用 Unity Plugins 开发的,我将此插件与 Android Studio Project 集成。 Android 项目还使用 Digimarc SDK 来识别 SKU。
现在的问题是当我运行与 Digimarc 集成的完整项目时,我从 Unity 收到错误:初始化失败!你的硬件不支持。
但如果我从项目中删除 Digimarc SDK,Unity 部分运行完美。
【问题讨论】:
标签:
android
unity3d
vuforia
【解决方案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 应用程序安装到设备时,因为它只有“armeabi-v7a”文件夹,设备从这里复制库并且应用程序正常运行。
但是,当我们安装同时集成了 unity+vuforia 和 Digimarc 的完整应用程序时,应用程序包确实包含所有 3 种架构的合并文件夹,但 VuForia 库仅在“armeabi-v7a”文件夹中可用,其余 2 确实包含 digimarc 的只有库,它们没有 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 页面上都运行良好。