2

現在、platform-tools フォルダーに含まれている systrace python スクリプトを実行しようとしていますが、次のエラーが発生します。

File "systrace.py", line 274, in <module>
 main()
File "systrace.py", line 60, in main
 device_sdk_version = get_device_sdk_version()
File "systrace.py", line 44, in get_device_sdk_version
 stderr=subprocess.PIPE)
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
 errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
 raise child_exception
OSError: [Errno 2] No such file or directory

Ubuntu 12.04 LTS で実行しています。systrace を実行するために使用しているコマンドは次のとおりです。

sudo python systrace.py -o output.html

注: sudo は、次のエラーを回避するためのものです。

File "systrace.py", line 274, in <module>
 main()
File "systrace.py", line 63, in main
 os.execv(legacy_script, sys.argv)
OSError: [Errno 13] Permission denied

Web を検索した後、解決策の 1 つは adb を PATH 変数に追加することであることがわかりました。platform-tools ディレクトリを PATH に追加しましたが、まだ同じエラーが発生します。問題の原因となっているコードと、明らかにこのスニペットを確認しました。

adb = subprocess.Popen(getprop_args, stdout=subprocess.PIPE,
                     stderr=subprocess.PIPE)

getprop_args次のように定義されます。

getprop_args = ['adb', 'shell', 'getprop', 'ro.build.version.sdk']

私が理解していることから、コードは次のコマンドを実行しようとしています:

adb shell getprop ro.build.version.sdk

コンソールでコマンドを実行しましたが、問題なく動作します。また、両方のコード行をコピーして Python インタープリターで実行したところ、問題なく実行されました。この問題を解決する方法が本当にわかりません。可能な解決策を知っている人はいますか?

4

2 に答える 2

1

Ok so I found out what the problem was. The problem was the sudo that I was putting right before python systrace.py -o output.html I didn't know but I guess the PATH variable is different when using sudo, than when not using it. So the PATH in sudo didn't have the platform-tools directory. So I removed the sudo and I was getting the following error:

File "systrace.py", line 274, in <module>
 main()
File "systrace.py", line 63, in main
 os.execv(legacy_script, sys.argv)
OSError: [Errno 13] Permission denied

To solve this problem I ran the following command on the legacy_script:

$chmod +x ./systrace-legacy.py

And now I was able to run the systrace script without a problem :P

于 2013-09-25T15:27:43.647 に答える