如何在Android上使用Kivy以root身份读写文件?

2 投票
1 回答
1846 浏览
提问于 2025-04-17 07:42

我想在我的Kivy应用程序中写入/etc/hosts文件,而且我有一个已经root过的设备可以测试。我尝试了几种方法,但每次都会导致我的应用程序没有任何警告或错误就退出。

我尝试过:

subprocess.Popen("su -c touch /etc/hosts", shell = True)

subprocess.Popen("su -c bash -c touch /etc/hosts", shell = True)

subprocess.Popen(["su", "-c", "bash -c touch /etc/hosts"])

还有几种组合方式。每次我都能看到su应用程序弹出消息框让我授权,我点击了“允许”,但之后我的应用程序还是退出了。

编辑:logcat的输出在 http://pastebin.com/YMT5Vxra

如果有人能给出建议,我将非常感谢!

1 个回答

2

你的错误提示说明“string-escape”这种编码方式是未知的。Kivy提供的Python版本是精简版,并不是所有的编码都有支持。你可以尝试以下步骤:

  • 获取python-for-android项目
  • 进入private/lib/encodings文件夹
  • 把你电脑上的文件复制到这个目录(/usr/lib/python2.7/encodings/string_escape.pyo)
  • 重新构建你的应用程序

这样应该就能解决问题了。

pgs4a-kivy项目并不好,因为Kivy没有提供你需要的文件。这就是我开始python-for-android项目的原因。这样你就可以在最终的发布版本中选择你想要的内容。

撰写回答