wtorek, 13 stycznia 2015

Android: wykonanie screenu przez adb

Istnieje wiele sposobów na wykonanie screenu w urządzeniach z systemem Android. Niestety zwykle oznacza to, że na różnych urządzeniach wymaga to różnych czynności, a na niektórych nie jest to w ogóle możliwe bez uzyskania dodatkowych uprawnień. Dotyczy to wykonywania zrzutu ekranu przy użyciu samego urządzenia. ADB jest potężnym narzędziem, które pozwala na obejście takich ograniczeń.


Aby wykonać zrzut ekranu na urządzeniu wystarczy skorzystać z komendy:
adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png
adb shell rm /sdcard/screen.png

Zrzut ekranu jest zapisywany na karcie SD urządzenia, następnie pobierany do folderu na komputerze, a na koniec usuwany z urządzenia. Całość można sprowadzić do jednej linii łącząc polecenia przy pomocy &&. Bez instalowania dodatkowych narzędzi (Cygwin, MinGW), to najwięcej na co stać środowisko postawione na systemie Windows.

Jeśli mamy przy okazji dostęp do Perl, możemy bardzo uprościć polecenie i sprowadzić je do jednej linii.
adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > screen.png

Komenda screencap pozwala na zwrócenie zawartości do stdout. Niestety adb shell powoduje konwersję z \n na \n\r, co tworzy uszkodzony plik PNG. Dlatego drugie rozwiązanie wykorzystje perl, aby wszystkie wystąpienia sekwencji 0x0D0A.

Brak komentarzy:

Prześlij komentarz