适用于 Android 的 Kivy 应用程序无法加载图像
Posted
技术标签:
【中文标题】适用于 Android 的 Kivy 应用程序无法加载图像【英文标题】:Kivy App for Android Unable to Load Image 【发布时间】:2021-11-11 19:33:35 【问题描述】:我通过 Buildozer 部署到 android 的 Kivy 应用程序无法在 Android 上正常启动,因为我添加了 .jpg 和 .wav 文件(用作背景图像和应用程序声音)。它在我的 Window 机器上运行得很好。
adb catlog
给我以下警告:Unable to load image </data/user/0/org.test.galaxy/files/app/assets/images/bg1.jpg>
。但更重要的是,如果我在我的 android 模拟器中导航到这个文件路径,那个文件确实存在。
View all my code in this public repo
执行我的galaxy.kv
的第 10 行时抛出此错误,该行尝试使用source: root.resource_path('assets/images/bg1.jpg')
设置我的 Rectangle 的背景信息
最初,我只是使用相对路径并将其全部留给 Buildozer 来处理特定于操作系统的路径(我在某个地方读过这应该可以工作),但由于我有这个错误,我已经包含了resource_path()
(感谢 *** 上的某个人)方法,该方法应该考虑操作系统特定的路径。下面是这段代码的样子:
def resource_path(self, relative_path):
base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
print('base path:', base_path)
return os.path.join(base_path, relative_path)
我的buildozer.spec
中的一些相关行(再次,通过上面的链接查看我的整个回购):
source.include_exts = py,png,jpg,kv,atlas,wav,ttf
...
requirements = python3,kivy
我是 Kivy 和 Buildozer 的新手,我显然错过了有关如何访问静态文件的一些内容。任何帮助将不胜感激。
【问题讨论】:
为了将来参考,在@JonathanRoux 指出问题所在后,我删除了所有resource_path()
的使用,它仍然可以正常工作。
【参考方案1】:
这可能是由于您的背景图像的分辨率太高。 请使用较小的图片重试。
【讨论】:
非常感谢!我将它换成较低分辨率的图像,现在它可以工作了。我如何让它与更大分辨率的图像一起使用?我一直在按照您的 Kivy 教程最终为 4K Android 智能电视构建不同的 Kivy 应用程序,因此需要大图像文件。以上是关于适用于 Android 的 Kivy 应用程序无法加载图像的主要内容,如果未能解决你的问题,请参考以下文章
从 kivy/python 程序创建适用于 Android 的 APK [重复]