iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 8
0

哈囉大家
開發 Android App 時
一定會需要用到 ADB(Android Debug Bridge) 對實機做些動作
例如:裝置連線、安裝 app、移除 app、查詢檔案等等
以下就列出幾個比較常用到的指令給大家

ADB 常用指令

  1. 裝置連線 adb connect "裝置的ip"
    大家在開發時通常都是手機接 USB 與電腦連線,但如果測試機一多身邊的 USB 線不夠該怎麼辦才好呢?
    這時你可以透過 adb connect 的方式來做連線,不過再下這個指令前請先確認你的 5555 port 是否已經打開,如果沒有,輸入完指令會出現以下錯誤訊息:
unable to connect to 裝置的ip:5555: cannot connect to 裝置的ip:5555: 無法連線,因為目標電腦拒絕連線。 (10061)

所以請先下指令 adb tcpip 5555
之後再下 adb connect "裝置的ip"

  1. 取得目前連線裝置清單 adb devices

  2. 清除所有連線 adb kill-server

  3. 指定特定裝置動作 adb -s "裝置名稱" 動作指令
    如果目前同時連線的裝置有兩台或兩台以上,下指令時電腦沒辦法同時間對每個裝置做動作,所以必須指定某台裝置做動作。
    此時我們先下 adb devices 列出所有連線的裝置名稱
    接著下 adb -s "裝置名稱" 動作指令

adb -s 10.10.35.128:5555 shell
  1. 安裝app adb install apk所在位置
adb install E:\Cindy\test.apk
  1. 移除app adb uninstall "packageName"
adb uninstall com.cindy.test
  1. 對裝置送KeyCode adb shell input keyevent "KeyCode"
adb shell input keyevent 3 (3為Home鍵的KeyCode)

*KeyCode可參考以下網址:
http://www.mail-archive.com/android-developers@googlegroups.com/msg14587.html

  1. 用ADB指令傳送文字 adb shell input text "想輸入的文字"
adb shell input text "Cindy"

Ps: 記得打雙引號

  1. 重新開機 adb reboot

  2. 對特定app清除資料 adb shell pm clear "packageName"
    這個指令等同於:設定->應用程式->點選特定app->清除資料

adb shell pm clear com.cindy.test
  1. 開啟特定app adb shell am start -n "packageName"/".進入點Activity Name"
adb shell am start -n com.cindy.test/.MainActivity
  1. 顯示指令小幫手 adb help

  2. 將檔案丟到手機裡 adb push "檔案位置" "裝置裡目的地位置"
    如果未來大家有開發到系統級的app的話 就需要用push的方式把app丟到系統資料夾內喔

adb push cindy.apk /system/app/
  1. 將檔案從裝置中拿出來 adb pull "檔案在裝置裡的位置" "目的地位置"
adb pull /system/app/cindy.apk E:\Cindy\

那接下來就介紹幾個 Android 常用的 ADB Shell 指令囉
首先輸入指令 adb shell 進入 Shell 模式

  1. 到指定路徑 cd "路徑位置"
cd /storage/sdcard0/Cindy
  1. 回該路徑上一層資料夾 cd ..

  2. 列出該資料夾中的檔案 ls or ls "資料夾位置"

ls /storage/sdcard0/Cindy
  1. 刪除檔案 rm "檔案名稱或位置"
rm Cindy.jpg
rm /storage/sdcard0/Cindy/Cindy.jpg
  1. 刪除資料夾
    rm -r "資料夾名稱或位置" or rmdir "資料夾名稱或位置"
rm -r Cindy
rm -r /storage/sdcard0/Cindy
rmdir Cindy
rmdir /storage/sdcard0/Cindy
  1. 新增資料夾 mkdir "資料夾名稱"
mkdir Cindy
  1. 閱讀文字檔 cat "文字檔或路徑"
cat cindy.txt
cat /storage/sdcard0/Cindy/cindy.txt
  1. 更改檔案權限 chmod 欲修改的權限 "檔案名稱或路徑"
chmod 644 cindy.txt

小妹我懶惰了點 如果需要知道有那些權限可以設
請參閱鳥哥5.2.2 如何改變檔案屬性與權限
http://linux.vbird.org/linux_basic/0210filepermission.php#chmod

  1. 取得檔案MD5 md5sum "檔案名稱或路徑"
md5sum cindy.txt
md5sum /storage/sdcard0/Cindy/cindy.txt
  1. 取得系統資訊 getprop
getprop
or
getprop | grep sys // 只過濾出含有 sys 的資料

這邊列出幾個系統商比較常會用到的參數,都會放在這

參數名稱 定義 程式碼
ro.product.brand 手機品牌 Build.BRAND
ro.product.device 裝置名稱 Build.DEVICE
ro.product.model 裝置型號 Build.MODEL
ro.build.version.release Android 版本 Build.VERSION.RELEASE

還有好多好多資訊在裡面
如果自己的 App 需要顯示一些系統資訊
就可以從這裡找起喔~

  1. 離開Shell模式 exit

小技巧

再來跟大家介紹幾個小技巧

如何在 Android TV 裝置上截圖

  1. adb 連線上機上盒後,打開 Android Studio,下方有個 Logcat 點下去,如果沒有看到,請按鍵盤 Alt + 6 就會跳出 Logcat 視窗,左側有個相機和 Play 的按鈕,如下圖
    https://ithelp.ithome.com.tw/upload/images/20200922/20107165URVB626KMF.png
    點擊上面相機就會截圖,點擊下方 Play 按鍵就會做螢幕錄影
    螢幕截圖完後你可以選擇要編輯它做旋轉或是繼續截圖、複製圖片、存檔等動作,錄影結束則是直接問你要存哪
    https://ithelp.ithome.com.tw/upload/images/20200922/201071654PCC4LpqTD.png

  2. 同時在遙控器上按下電源鍵音量-,長按兩秒就會截圖了

  3. 接上鍵盤,不管是有線還是無線都可以,接上且 Work 之後,按下平常在 PC 上截圖的 PrtSc 就可以截圖了

以上2.3.點截完圖後,會存在設備裡的 /sdcard/Pictures/Screenshots 資料夾中,可以用上面教的 pull 把圖片載到電腦來
或是打開 Android Studio,找到右方工具欄最下方 Device File Explorer,然後去找到 /sdcard/Pictures/Screenshots 資料夾,就可以看到剛剛的螢幕截圖
https://ithelp.ithome.com.tw/upload/images/20200922/20107165R9sCNkzSJ2.png
想載下來就可以對著資料夾 or 檔案 or 多個檔案按下右鍵 -> Save as... 來做存檔了
https://ithelp.ithome.com.tw/upload/images/20200922/20107165s7hLiOUeMa.png

如何將 Json 資料快速生成 Kotlin Data Class

  1. 首先安裝 Plugins JSON To Kotlin Class (JsonToKotlinClass)
  2. File -> Settings -> Plugins -> 在 Marketplace 中輸入上方 Plugin 的名稱 -> 點擊 Install -> 重開 Android Studio
    https://ithelp.ithome.com.tw/upload/images/20200927/20107165fqFFoDB0bG.png
  3. 新增一個 Kotlin File 然後在空白處按右鍵 -> Generate -> Kotlin Data Class from JSON
  4. 複製 Json 並貼上 -> 填上 Class name -> Generate
    https://ithelp.ithome.com.tw/upload/images/20200927/20107165XHPvhMYRMH.png
    這個畫面左下角有個 Advanced 按紐,點下去可以做比較詳細的設定
  5. 完成!!
    https://ithelp.ithome.com.tw/upload/images/20200927/20107165kNfzyucDz5.png

這篇就先到這邊啦~
明天待續囉~~


上一篇
Day 7 - 建立 Android TV 模擬器及連接實機
下一篇
Day 9 - Android Leanback Library
系列文
宅經濟起飛,想當顆沙發馬鈴薯嗎??智慧電視會是未來的趨勢嗎??讓我們一探 Android TV 的神秘世界30

尚未有邦友留言

立即登入留言