
当开发者尝试使用 buildozer 构建 kivy android 应用时,执行 buildozer android debug deploy run 等命令后,可能会在编译过程中遭遇以下类似的 cython 编译错误信息:
kivy/core/image/_img_sdl2.pyx:35:18: Cannot assign type 'size_t (*)(SDL_RWops *, const void *, size_t, size_t) except? -1' to 'size_t (*)(SDL_RWops *, void *, size_t, size_t) noexcept'. Exception values are incompatible. Suggest adding 'noexcept' to type 'size_t (SDL_RWops *, const void *, size_t, size_t) except? -1'.
Error compiling Cython file:
------------------------------------------------------------
...
    cdef SDL_RWops *rwops = SDL_AllocRW()
    rwops.hidden.unknown.data1 = <void *>byteio
    rwops.seek = NULL
    rwops.read = NULL
    rwops.write = &rwops_bytesio_write
    rwops.close =&rwops_bytesio_close
                 ^
------------------------------------------------------------
kivy/core/image/_img_sdl2.pyx:36:17: Cannot assign type 'int (*)(SDL_RWops *) except? -1' to 'int (*)(SDL_RWops *) noexcept'. Exception values are incompatible. Suggest adding 'noexcept' to type 'int (SDL_RWops *) except? -1'.此错误信息明确指示了问题发生在 Kivy 的核心图像模块 kivy/core/image/_img_sdl2.pyx 的 Cython 编译阶段。核心问题在于 C 函数指针的类型赋值兼容性,具体表现为 except? -1 与 noexcept 之间的不匹配。
其根本原因在于:
简而言之,这是一个典型的依赖库版本冲突问题,即 Kivy 的某个核心模块在编译时,需要一个特定版本的 Cython 才能正确处理其 C 语言接口的定义。
根据 Kivy 和 Buildozer 的官方文档及社区经验,解决此类 Cython 编译错误最直接且有效的方法是使用与 Kivy 当前版本兼容的特定 Cython 版本。对于 Kivy 2.2.1,推荐且经过验证的 Cython 版本是 0.29.33。
在执行任何修改之前,建议先检查当前系统或虚拟环境中已安装的 Cython 版本:
pip show Cython
或
cython --version
如果显示的版本是 3.x.x 或其他非 0.29.33 的版本,则需要进行降级操作。
执行以下命令来安装或降级 Cython 到 0.29.33 版本:
pip3 install --user --upgrade Cython==0.29.33
这条命令的各个部分含义如下:
重要注意事项:
buildozer android clean
然后,再重新执行您的构建命令,例如:
buildozer android debug deploy run
通过将 Cython 版本精确控制在 0.29.33,可以有效解决 Kivy Buildozer 在编译 _img_sdl2.pyx 文件时遇到的兼容性问题,从而确保 Kivy Android 应用的顺利构建和部署。这是一个在 Kivy 社区中常见的解决方案,充分体现了在复杂开发环境中依赖管理的重要性。
以上就是Kivy Buildozer 编译 Cython 错误解析与版本兼容性解决方案的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号