從事 Android App 開發的獨立開發者,常常會需要使用螢幕截圖來進行說明或者一些其他的用途,特別是撰寫介紹文章以及 App 說明文的時候,有沒有圖片的支援,對於終端使用者的方便度來說是差很大的,俗謂「一圖解千言」不是沒有道理。例如日前寫的「如何使用旅行計算機 app」就使用了不少圖片來說明,一張張慢慢截圖的話大概要花整整一天。
關鍵來了,實際操作過的話,就會知道要把圖片從手機上或者模擬器上面截下來然後送到自己的電腦上,是一件有點麻煩的事情。要先在手機或者模擬器上操作螢幕截圖,然後到相簿裡面把截圖透過 Mail 或者其他方式轉給自己的帳號,再到電腦上從那些 Mail 或者 Line 帳號將圖給存下來,進一步拿來運用。通常這樣做完一輪,就是拿到一張圖,面對一篇文章裡面說明動作動輒十來個的圖片需求,一篇文章寫完大概就已經累掛,沒啥力氣繼續寫 Code。
插個話,因為我的開發環境是在 Macbook Pro 上,所以環境都是以 macOS 為主,如果到 Windows 上,就需要把 Shell Script 改寫為 Bat 檔,或者啟用 Windows 10 的 Linux Subsystem 機制,才能夠 run。Linux 的話,應該就沒有這個困擾。adb 的指令參數應該都一樣,如果有不一樣的,再查一下版本差異改一下對應的指令就可以。需要的話可以參考一下 adb command 。
針對截圖問題,有沒有方便好用的方法可以快速處理呢?
有的,今天就分享一個簡單的 Shell Script ,可以快速的對目前螢幕上的圖進行擷取,然後一氣呵成完成把圖送到自己電腦桌面上的動作,免去上面那些繁瑣的步驟。
先來看 Shell Script: ( Bash 說明可以參考一下鳥哥的介紹 )
#!/bin/bash filename=$1 TARGET="/sdcard/$filename" adb shell screencap -p $TARGET adb pull $TARGET adb shell rm $TARGET # 最後一步,把檔案 mv 到 Desktop 去 mv $filename ~/Desktop/
接著來說明一下。
一開始先收參數,也就是想要存檔的檔名。第一個參數就會被列為是最終要存起來的檔名。然後那個 TARGET=… 的那一行,是等一下截圖過程當中會需要用到的目錄路徑,這個路徑是在模擬器上或者真實手機上都可以使用的,下命令截圖完畢的圖檔,就會先放到這邊。
接著連續三行呼叫 adb 做事。
adb shell screencap ,就是最重要的,把圖截下來,目前畫面上是什麼圖,就原封不動把它抓下來,可以在做完需要的示範之後,停在那邊,然後下命令擷取。
adb pull ,則是把手機或者是模擬器上的檔案從裡面「拖」出來到電腦上,具體來說就是剛剛的截圖命令把圖片存起來到內部的 /sdcard 目錄下,pull 則是把這個檔案從裡面再拿出來到電腦上。
adb shell rm ,這一行就是把截完圖的檔案砍掉,因為已經拖到電腦上了,所以就可以直接砍掉,免得 /sdcard 底下越來越多檔案,吃掉空間。
最後一步,為了方便作業,直接把剛剛弄出來的圖片檔案,搬到 Desktop 去,這樣就可以直接在桌面看到剛剛截出來的圖片,進而進行編輯或者上傳出去完成文章編寫。
每次需要截圖,就是呼叫這個 Shell Script ,後面加上想要的檔名,就可以在桌面看見那個檔案出現,內容則是目前手機或者是模擬器的畫面,有沒有很方便?
生命,就該浪費在美好的事物上!快速截圖,可以幫您省下時間,多陪陪家人、多寫點程式,都比在那邊跟繁瑣的步驟搏鬥來得有趣多了。
分享這個快速截圖的小撇步,希望能幫大家節省更多時間。
Happy Coding !