我正在使用带有Kivy应用程序的JsonStore
from kivy.storage.jsonstore import JsonStore
stored_data = JsonStore('data.json')
在我的PC上,即使重新构建程序也将保留存储。
在我的Android手机上,重新加载相同的apk文件将保留数据,但是对程序进行的任何更改(和重建)似乎都将擦除存储的数据。
我做错什么了,如何通过升级保留数据?
那是因为您将文件写入应用程序所在的文件夹。您应该将它们写入/ sdcard并赋予写入权限:
from jnius import autoclass
from android.permissions import request_permissions, Permission
...
# request a permission from user
request_permissions([Permission.WRITE_EXTERNAL_STORAGE, Permission.READ_EXTERNAL_STORAGE])
...
# path to sdcard (external storage that user have access to)
Environment = autoclass('android.os.Environment')
sdpath = Environment.getExternalStorageDirectory().getAbsolutePath()
因此,在那之后您可以将您的文件夹放在那里,例如:
if not os.path.exists(sdpath + '/yourappname'):
os.makedirs(sdpath + '/yourappname')
并保存您的文件,不再需要在重新安装应用程序时将其删除。
P.S。不要忘记将pyjnius添加到buildozer规范文件中的要求!