Android kivy应用程序文件(ini、图像、数据库等)放在哪里?

7
我使用kivy为Android创建了一个原型应用程序,它已经在buildozer中编译,并上传到了Android设备上。但我不确定应该把依赖于应用程序的文件(如ini文件、图像数据库等)放在哪里。非常感谢任何帮助。
[编辑2020年07月25日]
当我问这个问题时(很久以前),我对kivy和整个buildozer的概念都很陌生。我没有意识到,对于初学者来说并不明显的是(观察此问题被查看的次数),Buildozer将整个Python/kivy项目包装成一个文件,其中可以包含所有你的静态数据。因此,您只需要确保您的buildozer规范将它们捕获即可。

Buildozer规范如何精确地选择它们? - Integral
2个回答

2
您可以按照自己的喜好进行排列 - 只要告诉buildozer将它们包含在apk中(即通过设置包含的文件类型、目录等),并使用相对路径在您的代码中访问它们,它们在设备上的工作方式将是相同的。INI文件可能是一个例外,我不确定kivy尝试从哪里加载它(但它可能在外部数据目录的某个地方)。如果将其放在与main.py相同的目录中无法正常工作,则可以使用相对路径手动加载它,或者如果它只有几个值,则可以在main.py文件中设置它们。

谢谢不便之处。是的,我所有的编码都使用相对目录。但在安卓设备上,相对于哪里呢?SD卡吗? - Psionman
1
对于Python脚本而言,如果相对目录在您的电脑上可以正常工作,并且您的文件已经被Buildozer正确地包含,那么它们也将在Android上正常工作。 - inclement
是的,但我没有将Python脚本加载到Android上,而是一个APK文件。 - Psionman
你的main.py将以同样的方式(在重要程度方面)在APK中运行,并且你的本地文件夹结构将被保留,因此你可以以同样的方式引用资源。 - inclement

0

我在使用pygame模块时它可以工作,我还没有尝试过其他模块,但也许它可以工作。

buildozer拉取文件的文件夹:

/data/data/package domain.package name /files/app/"

例如:

buildozer.spec:
title = application
package.name = myapp
package.domain = org.test

main.py:

import os , sys
import pygame
path = "/data/data/org.test.myapp/files/app"
image = pygame.image.load(path+"image.jpg")

这个命令行需要转换成apk才能运行,但翻译后可以正常工作。

文件夹路径只有在安卓上运行时才有效,但是... ----->

也许这会有所帮助: ----> https://youtu.be/XQTIllli6js

还有这个: https://github.com/Sahil-pixel/Pygame-for-android/tree/main


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接