返回

MediaPipe与Kivy应用程序架构不匹配,如何解决?

Android

## Kivy 应用程序中的 MediaPipe:解决架构不匹配问题

在构建使用 MediaPipe 的 Kivy 应用程序时,你可能会遇到 "ImportError: dlopen failed: ... is for EM_X86_64 (62) instead of EM_AARCH64 (183)" 错误。这表明你的应用程序使用的 MediaPipe 版本与你的 Android 设备的架构不匹配。

## ARM64 架构的 MediaPipe

要解决此问题,你需要为你的 ARM64 架构设备构建 MediaPipe。以下步骤将指导你完成此过程:

  1. 克隆 MediaPipe 存储库:
git clone https://github.com/google/mediapipe.git
  1. 切换到 ARM64 分支:
git checkout refs/heads/arm64-android
  1. 构建 MediaPipe:
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/your/aarch64-toolchain.cmake ..
make -j$(nproc)

## 集成到 Kivy 应用程序

构建 MediaPipe for ARM64 后,将其集成到你的 Kivy 应用程序中:

  1. 复制 MediaPipe 到应用程序文件夹:
    将构建的 MediaPipe 文件夹(build/lib.arm64-v8a)复制到应用程序的根目录。

  2. 更新 Buildozer 配置文件:
    在 Buildozer 配置文件中,将以下行添加到 requirements 部分:

path = <path/to/copied/mediapipe/folder>

## 构建和部署 APK

更新 Buildozer 配置文件后,构建 APK 并将其部署到你的 Android 设备上:

buildozer android debug

## 结论

通过构建一个与你的设备架构匹配的 MediaPipe 版本,你可以解决 "ImportError: dlopen failed" 错误并成功运行你的 Kivy 应用程序。确保你的 Android 设备已启用开发人员选项,并在必要时清除应用程序缓存并重新安装 APK。

## 常见问题解答

1. 如何确定我的 Android 设备的架构?

  • 转到 "设置" > "关于设备" > "高级" > "硬件型号"。型号名称中包含 "arm64" 或 "aarch64" 表示 ARM64 架构。

2. 我可以使用 MediaPipe for ARM32 吗?

  • 是的,你可以。但是,需要为 ARM32 架构构建 MediaPipe 并相应地更新你的 Kivy 应用程序。

3. 如果我仍然遇到问题怎么办?

  • 从头开始构建应用程序并仔细检查你的步骤。确保正确安装了 Android SDK 和 NDK。

4. MediaPipe 有哪些其他架构可用?

  • MediaPipe 提供了针对不同架构的构建,包括 x86、x86_64 和 aarch64。

5. 如何在其他操作系统上使用 MediaPipe?

  • MediaPipe 也可用于 iOS 和桌面平台(例如 Windows、MacOS 和 Linux)。请参阅官方文档以获取特定平台的说明。