adb shell常用命令


linux下 adb連接無權限或必須切換usb到文件傳輸才可連接、或fastboot無法識別到手機:

      使用時報no permissions (missing udev rules? user is in the plugdev group); see [http://developer.android.com/tools/device.html]  或 直接就識別不到

      解決方法:

$adb start-server
$lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 17ef:6099 Lenovo
Bus 001 Device 002: ID 17ef:608d Lenovo
Bus 001 Device 033: ID 18d1:4ee7 Google Inc. //android xxx
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

$sudo vim /etc/udev/rules.d/90-android.rules

   編輯文本內容為

SUBSYSTEM=="usb",ATTRS{idVendor}=="18d1",ATTRS{idProduct}=="4ee7",MODE="0666",GROUP="plugdev",SYMLINK+="android",SYMLINK+="android_adb"

   需要改的信息為:

ATTRS{idVendor}=="有Google字樣此行的ID的左側數字 我這里是18d1" 
ATTRS{idProduct}=="有Google字樣此行的ID的右側數字 我這里是4ee7"

重啟 abd 服務

sudo udevadm control --reload-rules
sudo service udev restart
sudo udevadm trigger
adb kill-server
adb start-server

 

文件中字符串查詢

grep -rn "hello,world!" ./  (具體用法可以 grep --help 查看)【grep是默認區分大小寫的!但也默認非全詞匹配!(但這兩點都可以通過參數改變)『opengrok是默認不區分大小寫的,卻默認全詞匹配,正好和grep相反!】
-r 是遞歸查找
-n 是顯示行號
-R 查找所有文件包含子目錄
-i 忽略大小寫
-l 只列出匹配的文件名
-L 列出不匹配的文件名
-w 只匹配整個單詞,而不是字符串的一部分(匹配 hello,不匹配helloo)

或 find / | xargs grep function 查找系統根目錄下面的所有文件的內容中包含有function字符串的文件列表。

 

目錄查找文件所在位置:

find ./ -name 文件名

 

查看包列表:

adb shell pm list packages [options] <FILTER>

打印所有軟件包,可選擇只打印軟件包名稱中包含<FILTER>的軟件包。

不使用參數:adb shell pm list packages,打印設備/模擬器上的所有軟件包

不使用參數:adb shell pm list packages,打印設備/模擬器上的所有軟件包

使用-f參數:adb shell pm list packages -f,輸出包和包相關聯的文件

使用-d參數:adb shell pm list packages -d,只輸出禁用的包。由於本機禁用沒有,輸出為空。

使用-e參數:adb shell pm list packages -e,只輸出啟用的包。

使用-s參數:adb shell pm list packages -s,只輸出系統的包。

使用-3參數:adb shell pm list packages -3,只輸出第三方的包。

使用-i參數:adb shell pm list packages -i,只輸出包和安裝信息(安裝來源)。

使用-u參數:adb shell pm list packages -u,只輸出包和未安裝包信息(安裝來源)。

 

查看某個包路徑:

adb shell pm path 包名

 

查看某個包信息:

adb shell dumpsys package com.xxxx.lfeh

 

發廣播:

adb shell am broadcast -a "xxxx.intent.action.SIM_LOCK_STATE_CHANGE" --ei "operator_type" 10

也可以adb shell am broadcast -a "xxxx.intent.action.SIM_LOCK_STATE_CHANGE" -e "operator_type" 10

 

啟動activity

am start -n com.cota.notification/com.cota.notification.xxxxxActivity --es state "complete" --es display_name "Vodafone"

 

adb解鎖:

先在開發者選項中選擇OEM解鎖

adb reboot bootloader

fastboot flashing unlock

選擇unlock

 

獲取屬性值:

adb shell getprop ro.xxx.operator 可以返回運營商

ro.vendor.xxx.operator

adb shell pm -p com.a.b. 返回包所在的手機路徑

 

獲取手機硬件信息等:

命令adb shell dumpsys engineer --query_indicate_info

OK:WIFI: 38:8a:be:6b:b0:37

WIFI2: null

BT: 38:8A:BE:6B:B0:36

PCBA: 0020031C0C10031200000650

Carrier: 10010111

IMEI1: 869802059893379

IMEI2: 869802059893361

MEID: A00000DDA2F80B

GUID: 093a141bc00d9b1738dcbea70219447437bde4a98691437f40bbaef4ed7bd1a3

Storage: Total:235458252, Used:9310100, Free:226148152

 

動態wm開關啟停WMS系列和部分AMS系列bug的ProtoLog(可啟停的開關收集於ProtoLogGroup.java文件中):

wm logging enable-text/disable-text [group…]  如: wm logging enable-text WM_DEBUG_STATES

logcat

(  或                   adb shell dumpsys window -d enable                                                       打開全局WindowManager:的log、 

      或                   adb shell dumpsys activity -d enable                                                        打開全局Activity的log

      或                   adb shell setprop sys.inputlog.enbaled true  + adb shell dumpsys input  打開 input log   )

 

Logcat使用:

logcat -b all > log.xml (all 會有些eventlog之類,比較全)

adb logcat |findstr abcdefg  (也可以使用grep但grep搜索默認區分大小寫的,findstr不清楚)

adb logcat -c (清除之前的log,因為打開logcat后會把之前的log也打印下來)

 

 

允許更新安裝已有系統app

adb shell setprop debug.allow.persist.update true

 

屏幕截圖:

adb exec-out screencap -p <截圖存放路徑> 示例: adb exec-out screencap -p /sdcard/img.jpg(將命名為img的截圖保存在sd卡中)

adb shell screencap -p filepath

 

屏幕錄制:

adb shell screenrecord [--time-limit time] <錄制文件存放的路徑> --time-limit參數的單位是s,可選可不選,無此參數默認錄制時間和最長錄制時間為180s。

示例: adb shell screenrecord --time-limit 30 /sdcard/video.mp4(錄制一個30s的視頻命名為video保存在sd卡中)

 

查看當前界面是哪個Activity:

adb shell dumpsys activity top | grep ACTIVITY
如果未安裝 grep for window.exe,請分開執行:

adb shell
dumpsys activity top | grep ACTIVITY

 

強行停止某應用運行

adb shell am force-stop <包名>

 

查看進程:

ps -ef | grep jiolock (查看所有正在運行的e關聯jiolock的進程並打印擴展f信息)

lsof -p 1234 (lists列出1234進程號p打開open的所有文件file)(如動態鏈接庫等)

 

查詢命令所使用的工具的位置:

which 命令

 

linux系統下載\更新代碼的命令repo:

repo(一個python腳本工具),repo 文件內寫明遠程訪問路徑用戶等信息,通過如

repo init -u ssh://xxx@gerrit.rnd.meizu.com:29999/platform/manifest -b 分支名字 的命令下載 .repo 文件(包含倉庫信息),再通過repo sync命令按照  .repo文件中的倉庫信息下載代碼,支持中斷后再次sync繼續下載。
repo forall -c "git reset --hard HEAD" // 所有代碼執行git命令,回退到HEAD

 

使用tee工具將輸出到終端的信息同時打印到文件:

命令內容 | tee qssi.log

 

查看硬盤各個目錄容量和使用量:

df -h

查看指定目錄總共占的容量,而不單獨列出各子項占用的容量:

du -sh 【指定的目錄】

 

查看某目錄結構:

tree -L 5  【指定目錄】 (以樹狀結構輸出目錄下5層的結構)(不想顯示文件可以用-d)

 

查看手機所有通過ServiceManager.addService添加到manager里的運行的Service

service list

 

調用service代碼里實現的dump函數

adb shell dumpsys activity service com.flyme.mobileservice/.fcts.FCTSService + 自定義的命令(空格為分割符)

 

Android編譯命令m、mm、mmm區別及工程搭建示例

要使用m、mm、mmm命令對Android代碼進行模塊編譯,需要先執行如下命令初始化環境。
    source build/envsetup.sh
    lunch
執行lunch時一般會通過命令行提示選擇版型,輸入對應的序號回車即可。

各命令作用及用法:
   mmm命令:編譯指定路徑下的模塊,需要指定模塊路徑(必須為該模塊的根目錄,包含Android.mk的目錄)。
   mm命令:編譯當前目錄下的模塊,需要進到模塊所在目錄,本質上跟mmm沒什么區別。
   m命令:編譯全部模塊。

或直接bash build.sh -j16 dist --qssi_only 2>&1 | tee mars.log這種公司常見編譯命令


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM