You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Buildozer打包Kivy应用为Android应用时遇架构不兼容错误

解决Kivy+Buildozer打包Android时的dlopen架构不兼容问题

错误dlopen failed: ... has unexpected e_machine: 62 (EM_X86_64)的核心原因是:打包生成的APK中包含了x86_64架构的原生库,而你的Android手机是ARM架构(比如arm64-v8a、armeabi-v7a),动态链接器无法识别非本机架构的库文件。

以下是针对性的解决方案:

  • 强制指定Android目标架构
    修改buildozer.spec中的android.arch参数,明确设置为你的手机支持的ARM架构,比如:

    android.arch = arm64-v8a
    

    之后清理旧构建缓存并重新打包:

    buildozer android clean
    buildozer -v android debug
    
  • 强制从源码交叉编译依赖库
    由于预编译的wheel包是针对x86_64架构的,需要让Buildozer从源码编译依赖库以适配Android ARM架构。在buildozer.spec中添加或修改以下配置:

    requirements = python3,kivy,charset-normalizer,cchardet
    android.pip_args = --no-binary :all:
    

    --no-binary :all:参数会强制pip下载依赖的源码包,再通过NDK交叉编译成Android兼容的原生库。

  • 检查并更新NDK版本
    旧版本NDK可能存在架构支持问题,确保buildozer.spec中指定的NDK版本为稳定兼容版:

    android.ndk_version = 25b
    
  • 验证APK架构正确性
    打包完成后,通过以下命令检查APK中的库架构:

    unzip -l your_app-0.1-debug.apk | grep lib/
    

    输出结果中应只包含你指定的ARM架构目录(如lib/arm64-v8a/),不应出现lib/x86_64/目录。

如果以上步骤仍未解决问题,直接删除项目根目录下的.buildozer缓存文件夹,再重新执行构建流程,避免缓存中的旧x86_64库文件干扰。

内容的提问来源于stack exchange,提问作者Zephyr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 23:39:07