Androidのgeteventとsendeventを簡単に使おう

2014年3月25日 by · コメント(3)
Filed under: Android, 開発のこと 

image

adb shell で繋いで input tap とか糞遅いんで、もっと速い手段を使おう!

 

Nexus 5 の場合は /dev/input/event1 がタッチパネルなので

adb shell で繋いで

getevent /dev/input/event1 > /sdcard/event.txt

ってやって、タッチパネルぐりぐりして気が済んだら Ctrl+C で終了させる

そんでまた adb shell 繋いでたったの1行

cat /sdcard/event.txt|while read a;do set $a;sendevent /dev/input/event1 $((0x$1)) $((0x$2)) $((0x$3));done

ってやるとさっきやったぐりぐりが再現されます。

ね。簡単でしょ?

数値が getevent では16進数だけど sendevent は10進数なんですが、0x でどうにかしてるのが見どころですね。

これをうまく使えば繰り返しのテストとかきっと捗ると思いますよ!

でも実際の動作より遅いのでなんとかできんもんじゃろかと悩んでる今日このごろです。

ICSで/data/local/tmp利用してrooted系のソース

2012年6月16日 by · コメント(4)
Filed under: Android 

なんか最近 ICS にアップデートされた端末で /data/local/tmp になんか symlink してアレする手法が多いよね?ってことで調査してみたよ。

ソース見ながら憶測で書いてるから的外れだったらごめんね!

 

やっちまったのは多分2011/7/8のこれ。

init: make “mkdir”; work even when the directory already exists. ·  27164dc · android/platform_system_core · GitHub

起動時に読み込まれる init.rc って設定ファイルを実行する init ってヤツなんですが。

失敗したらエラー返すだけだったのを、ディレクトリが存在したら chmod するように変更されてますね?そして chmod に成功したら chown まで行っちゃいますね?

これがあかん。

adb shell で入ったら uid=2000(shell) gid=2000(shell) でして。

なので、init.rc で

    mkdir /data/local 0771 shell shell
    mkdir /data/local/tmp 0771 shell shell

とか shell で書けるようにしてくれてるディレクトリに symlink しちゃえばあら不思議。

起動時に勝手に権限書き換えてくれるのでした!!!

みたいな。

 

で流石に、これあかんやつやって気づいたみたいで10ヶ月ほど経って2012/5/2に

init: make chmod/mkdir/chown not follow symlinks ·  42a9349 · android/platform_system_core · GitHub

「いやいや symlink あかんやろw」って修正されてます。

 

なので、今後出てくるやつではこの穴は使えなくなるんじゃないかしら?たぶん。