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

Kivy APK构建报错:Android平台64/32位库冲突致ImportError

解决Python-Bidi在Buildozer打包Android时的架构不兼容问题

错误原因

你同时指定了arm64-v8a和armeabi-v7a双架构打包,但python-bidi编译生成的bidi.so是64位二进制文件,在32位(armeabi-v7a)设备上运行时,系统无法加载64位库,从而触发dlopen failed错误。

解决方案

方案1:只构建单一32位架构(最简单有效)

修改buildozer.spec中的架构配置,只保留32位架构:

android.archs = armeabi-v7a

然后清理旧构建缓存,重新打包:

buildozer android clean
buildozer android debug deploy run

这个方案能覆盖绝大多数Android设备,包括旧款32位设备,完全避开双架构编译的兼容性问题。

方案2:强制使用python-bidi的纯Python实现

python-bidi本身提供了纯Python的算法实现,不需要依赖编译的二进制库。在你的main.py最顶部添加以下代码,绕过对编译so的导入:

import sys
# 禁用编译版的bidi模块,强制使用纯Python实现
sys.modules['bidi._bidi'] = None
# 直接导入纯Python的显示函数
from bidi.algorithm import get_display

之后你处理阿拉伯文本时,直接调用get_display()函数即可,比如:

arabic_text = "العربية"
formatted_text = get_display(arabic_text)

这个方案保留双架构打包的同时,避免了二进制库的架构冲突。

方案3:更新构建工具并重新编译

如果坚持要双架构打包,可以尝试更新Buildozer和Python-for-Android到最新版本,确保工具链支持双架构编译python-bidi:

pip install --upgrade buildozer python-for-android

然后清理缓存重新构建:

buildozer android clean
buildozer android debug

额外注意

mysql-connector-python是带二进制扩展的库,在Android上也可能出现类似的架构兼容问题,建议替换为纯Python的数据库驱动(比如pymysql),降低打包风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 19:50:05