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

Kivy安卓应用启动崩溃(关联jnius.so):兼容问题修复求助

解决Kivy应用安卓启动崩溃(JNI ArrayStoreException关联jnius.so)

1. 清理python-for-android缓存并重建依赖

  • 进入虚拟环境,执行p4a config确认ndk_version=25b、android_api=33配置正确
  • 删除p4a缓存目录,避免旧编译残留:rm -rf ~/.local/share/python-for-android/
  • 重新执行buildozer android clean后再构建部署

2. 调整Buildozer配置文件(buildozer.spec)

  • 强制锁定NDK/API版本,添加jnius兼容配置:
    android.api = 33
    android.ndk = 25b
    android.ndk_api = 21  # jnius对NDK API21兼容性更稳定
    android.add_libs = libc++_shared.so
    
  • 禁用预编译jnius,强制本地编译:
    android.p4a_local_recipes = ./recipes
    
    项目根目录创建recipes/jnius文件夹,复制python-for-android官方jnius recipe到该目录

3. 修复MacOS下的库权限问题

  • 构建完成后,检查bin/[应用名]/libs/[架构]/jnius.so权限,确保为rwxr-xr-x
  • 权限异常的话,在buildozer.spec添加编译后修复命令:
    android.add_postbuild_cmd = chmod 755 libs/**/*.so
    

4. 验证Python版本兼容性

  • Python 3.11与当前工具链组合可能存在适配问题,尝试降级到Python 3.10.x:
    • 新建虚拟环境:python3.10 -m venv kivy-venv
    • 重装依赖:pip install kivy==2.3.1 buildozer==1.5.0 python-for-android==2024.01.21

5. 匹配模拟器架构

  • 确认模拟器架构(x86_64/arm64-v8a)与Buildozer配置一致:
    android.arch = arm64-v8a  # 或x86_64,根据模拟器架构选择
    
  • 重启模拟器后重新部署

6. 定位详细崩溃原因

  • 用adb获取完整错误日志:adb logcat *:E,过滤JNI相关报错
  • 若日志显示__cxa_throw_bad_array_new_length找不到,确认已添加android.add_libs = libc++_shared.so配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 22:06:00