在 iOS 设备上运行时,如何允许我的 Kivy 应用程序访问文本文件?

Posted

技术标签:

【中文标题】在 iOS 设备上运行时,如何允许我的 Kivy 应用程序访问文本文件?【英文标题】:How can I allow permissions for my Kivy app to access text files when running on an iOS device? 【发布时间】:2021-11-28 03:55:51 【问题描述】:

我用 Python 和 Kivy 为 ios 制作了一个天气应用程序,最后构建了它并让它在 Xcode 模拟器上运行。我在 Windows 10 上编写了程序,但一直在 Mac 上编译它。我可以在我的 iOS 设备上构建它,但是当我运行应用程序功能时,当我的 main.py 尝试写入.txt 文件时,我似乎得到了permissionerror: [errno 1] operation not permitted:。它需要引用的.txt 文件与所有其他文件位于同一工作目录中,例如。 main.kv、firebase.py 等等等等,所以我不太确定这里发生了什么。

我已尝试清理构建并删除派生数据并重新开始构建。在查找器文件中,我已更改权限以允许对与应用程序相关的每个文件具有“读写”权限。签名和功能都在我的名下,我通过我的设备“信任”了它。

另外,当我在我的实际设备上尝试任何 firebase 身份验证时,应用程序崩溃并退出,但在模拟器上它工作得很好。在我的 iPhone/iPad 上,我可以像往常一样更新实时数据库,但在 Firebase 上进行身份验证时,它只是中断了。我猜这是因为它写入了身份验证发生时读取的“refresh_token.txt”文件。

如何在我的 iOS 设备上允许此权限?有没有办法允许在 iOS 上写入文件?

我对使用 Mac/Xcode/Kivy 很陌生,所以请善待我。我会很感激这里的任何帮助。非常感谢。

这是 xcode 包的屏幕截图。文本文件是:

“alternate_figs.txt”

“briefing_results_1.txt”

“briefing_results_2.txt”

“刷新令牌.txt”

我注意到在这个侧窗口中,它们没有显示标签的“.txt”部分。跟这个有关系吗?

【问题讨论】:

您必须在沙箱中工作。如果您已将 txt 文件添加到您的项目中,它们将最终包含在包中。您需要使用 Bundle api 从包中读取文件。 请问我是如何开始学习使用 bundle api 的?抱歉,我完全不知道 xcode 发生了什么。 【参考方案1】:

经过大量研究,我发现我不允许编写 iOS 应用程序的根文件夹,并且只能将其写入名为 user_data_dir 的特定目录中。我在我的程序中所做的只是在我所有的写入文件命令前面加上self.user_data_dir +

所以之前的 open("briefing_results_1.txt", "w") 现在只是 open(self.user_data_dir + "briefing_results_1.txt", "w")。这解决了一切。

【讨论】:

以上是关于在 iOS 设备上运行时,如何允许我的 Kivy 应用程序访问文本文件?的主要内容,如果未能解决你的问题,请参考以下文章

即使在笔记本电脑上播放良好,Kivy 声音也无法在 Android 设备上播放

Kivy 相机代码无法在 android 设备上运行

在 KIVY 中运行程序时如何更改窗口上的图标

如何在 Kivy-iOS 上修改屏幕分辨率

Kivy USB 键盘双打字字母

如何在 kivy 中创建超链接?