2

我想在我的 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

非常感谢有人可以提出任何建议!

4

1 回答 1

2

您的错误表明 string-escape 不是已知的编码。Kivy 正在发布一个精简版的 Python 及其库,而不是所有的编码。您可以尝试的是:

  • 抓取 python-for-android 项目
  • 进入 private/lib/encodings
  • 将文件从您的计算机复制到此目录(/usr/lib/python2.7/encodings/string_escape.pyo)
  • 重建您的应用程序

那么这应该工作。

一旦 kivy 没有发送您想要的文件,pgs4a-kivy 项目就不好。这就是我开始python-for-android项目的原因。在最终发行版中,您将拥有您想要或不想要的力量。

于 2011-12-05T14:49:46.923 回答