2011-12-05 10 views
2

私のKivyアプリで/ etc/hostsに書きたいと思っています。確かに、テストするための根っこのデバイスがあります。私はいくつかの方法を試みたが、常に警告やエラーなしで私のアプリを終了させる。Kivy for Androidを使用してファイルをルートとして読み書きする方法は?

私が試してみた:それらの

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のアプリメッセージボックスを得ることができるたびに、私は "許可"を押したが、その後、私のアプリは終了する。

EDIT:誰でも任意の提案を与えることができればlogcat出力はhttp://pastebin.com/YMT5Vxra

多くのおかげであります!

+0

その後にコードがありますか? ['' 'time.sleep(5)' ''](http://docs.python.org/library/time.html#time.sleep)で5秒待つようにしてください。 '' 'touch''が実行を終了する前に、プログラムが終了している可能性があります。 – FakeRainBrigand

+0

プログラムはKivy Platformの下にあります。このコードをボタンクリックイベントにバインドします。しかし、それはただ静かに終了します... –

+0

"adb logcat"からあなたのログを投稿できますか?何かがうまくいかないときにKivy/Pythonが例外を出力する – tito

答えて

2

エラーは、文字列エスケープが既知のエンコーディングではないことを示しています。 KivyはlibのPythonの軽いバージョンを出荷しています。例えば、すべてのエンコーディングではありません。

  • グラブのpython-用-のAndroidプロジェクト
  • のlib /エンコーディング
  • /プライベートコピーに入り、このディレクトリへのコンピュータからファイルをディレクトリ(/ usr/libに/ python2:何あなたが試すことができることにあります。 7 /エンコード/ string_escape.pyo)
  • 動作するはずその次に、あなたのアプリケーション

を再構築します。

kivyがあなたが望むファイルを出荷していないと、pgs4a-kivyプロジェクトは良くありません。これが私がpython-for-androidプロジェクトを開始した理由です。最終的な配布には、あなたが望むものとそうでないものの力があります。

+0

リンクが死んでいますか? –