我专门为 android 开发了一个 kivyMD 应用程序,它在 Windows 上运行得很好,如 .py 但当在 Windows 上使用 ubuntu 转换为 apk 时,它给出了一个错误:
/mnt/c/Users/Ayan/Documents/rackcalculator/.buildozer/android/build-arm64-v8a_armeabi-v7a/build/python-installs/rackcalculator/arm64-v8a/kivymd/material_resources.py, line 20, in <module>
AttributeError: 'NoneType' object has no attribute 'width'
来自 buildozer 安装的 kivyMD。
我尝试在material_resources.py中手动更改代码并编译它。但在运行 buildozer build 后仍然出现同样的问题。干净的构建下载相同的material_resources.py,但出现错误。
包含错误的代码使用
kivy.core.window import Window
然后 Window.width
& Window.height
如果不查看更多代码,我无法确定,但听起来您的代码正在尝试在创建窗口之前或删除窗口之后访问窗口属性和/或方法。
在 kivi.core.Window 的文档中有很多要点,其中提到的东西仅是桌面,但高度和宽度不在其中,但它们被标记为 AliasProperty
所以实际上使用 setter/ getter 方法。
AttributeError: 'NoneType' object has no attribute 'width'
消息告诉我,此时在代码中您的窗口变量为 None - 即当前/尚不存在。请记住,窗口创建之类的事情可能并不总是发生在平台和实现之间的同一点。 另一种可能性是您的窗口创建失败
在 android 上并返回 None
值。希望有帮助!