【发布时间】: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()(感谢 stackoverflow 上的某个人)方法,该方法应该考虑操作系统特定的路径。下面是这段代码的样子:
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()的使用,它仍然可以正常工作。
标签: android kivy buildozer file-access