一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

ADB常用指令與logcat日志

 南宮龍貓 2016-06-17

ADB命令簡(jiǎn)介

  ADB是一個(gè)功能強(qiáng)大的命令行工具。通過(guò)它可以直接和模擬器或真機(jī)進(jìn)行交互。它是一個(gè)具有客戶端和服務(wù)器端的程序。

  它主要由三個(gè)部分組成

  1. 客戶端,它運(yùn)行在你的開發(fā)機(jī)上,你可以通過(guò)執(zhí)行adb命令來(lái)喚起一個(gè)客戶端。其他的工具例如:ADT插件以及DDMS也可以創(chuàng)建一個(gè)ADB客戶端。
  2. 服務(wù)端,它運(yùn)行在你的后臺(tái)進(jìn)程,這個(gè)服務(wù)管理客戶端和運(yùn)行在你模擬起或真機(jī)上的守護(hù)進(jìn)程。
  3. 守護(hù)進(jìn)程,它運(yùn)行在每臺(tái)模擬器或真機(jī)的后臺(tái)進(jìn)程。

  當(dāng)你啟動(dòng)一個(gè)adb客戶端的時(shí)候,客戶端會(huì)首先檢測(cè)是否已經(jīng)有adb服務(wù)進(jìn)程運(yùn)行,如果沒有運(yùn)行,那么它會(huì)首先啟動(dòng)一個(gè)服務(wù)進(jìn)程,當(dāng)服務(wù)進(jìn)程啟動(dòng)后,服務(wù)進(jìn)程綁定本地的5037端口,并且監(jiān)聽所有來(lái)自adb 客戶端的命令,所有的adb客戶端通過(guò)5037與adb 服務(wù)端進(jìn)行交互。

  服務(wù)端運(yùn)行之后與所有運(yùn)行的模擬器或真機(jī)建立鏈接,它通過(guò)一組范圍從5555 到5585的奇數(shù)的端口檢索到所有的模擬器或真機(jī)。每一臺(tái)模擬器或真機(jī)需要獲取一對(duì)連續(xù)的端口,偶數(shù)端口用于控制臺(tái)的鏈接,奇數(shù)端口用于adb的鏈接。

  當(dāng)然,如果你用Eclipse開發(fā),并且也安裝了ADT插件,那么你沒必要通過(guò)adb命令行與模擬器或真機(jī)交互,ADT插件已經(jīng)完美的將adb整合進(jìn)了Eclipse IDE.當(dāng)然還是提倡多使用adb命令行,這樣的話比較方便自定義debug方法,同時(shí)也可以更好的理解其工作原理。

Adb命令列表

  下列表格列出了adb支持的命令,并對(duì)它們的意義和使用方法做了說(shuō)明.

CategoryCommandDescriptionComments
Options-d僅僅通過(guò)USB接口來(lái)管理abd.如果不只是用USB接口來(lái)管理則返回錯(cuò)誤.
-e僅僅通過(guò)模擬器實(shí)例來(lái)管理adb.如果不是僅僅通過(guò)模擬器實(shí)例管理則返回錯(cuò)誤.
-s 通過(guò)模擬器/設(shè)備的允許的命令號(hào)碼來(lái)發(fā)送命令來(lái)管理adb (比如: 'emulator-5556').如果沒有指定號(hào)碼,則會(huì)報(bào)錯(cuò).
Generaldevices查看所有連接模擬器/設(shè)備的設(shè)施的清單.查看 Querying for Emulator/Device Instances獲取更多相關(guān)信息.
help查看adb所支持的所有命令。. 
version查看adb的版本序列號(hào). 
Debuglogcat [將日志數(shù)據(jù)輸出到屏幕上. 
bugreport查看bug的報(bào)告,如dumpsys ,dumpstate ,和logcat 信息。 
jdwp查看指定的設(shè)施的可用的JDWP信息.可以用 forward jdwp: 端口映射信息來(lái)連接指定的JDWP進(jìn)程.例如: 
adb forward tcp:8000 jdwp:472 
jdb -attach localhost:8000
Datainstall 安裝Android為(可以模擬器/設(shè)施的數(shù)據(jù)文件.apk指定完整的路徑). 
pull  將指定的文件從模擬器/設(shè)施的拷貝到電腦上. 
push  將指定的文件從電腦上拷貝到模擬器/設(shè)備中. 
Ports and Networkingforward  用本地指定的端口通過(guò)socket方法遠(yuǎn)程連接模擬器/設(shè)施端口需要描述下列信息:
  • tcp:
  • local:
  • dev:
  • jdwp:
ppp  [parm]...通過(guò)USB運(yùn)行ppp:
  •  — the tty for PPP stream. For exampledev:/dev/omap_csmi_ttyl.
  • [parm]...  &mdash zero or more PPP/PPPD options, such as defaultroute ,local , notty , etc.

需要提醒你的不能自動(dòng)啟動(dòng)PDP連接.

 
Scriptingget-serialno查看adb實(shí)例的序列號(hào).查看 Querying for Emulator/Device Instances可以獲得更多信息.
get-state查看模擬器/設(shè)施的當(dāng)前狀態(tài).
wait-for-device如果設(shè)備不聯(lián)機(jī)就不讓執(zhí)行,--也就是實(shí)例狀態(tài)是 device 時(shí).你可以提前把命令轉(zhuǎn)載在adb的命令器中,在命令器中的命令在模擬器/設(shè)備連接之前是不會(huì)執(zhí)行其它命令的. 示例如下:
adb wait-for-device shell getprop
需要提醒的是這些命令在所有的系統(tǒng)啟動(dòng)啟動(dòng)起來(lái)之前是不會(huì)啟動(dòng)adb的 所以在所有的系統(tǒng)啟動(dòng)起來(lái)之前你也不能執(zhí)行其它的命令. 比如:運(yùn)用install 的時(shí)候就需要Android包,這些包只有系統(tǒng)完全啟動(dòng)。例如:
adb wait-for-device install .apk
上面的命令只有連接上了模擬器/設(shè)備連接上了adb服務(wù)才會(huì)被執(zhí)行,而在Android系統(tǒng)完全啟動(dòng)前執(zhí)行就會(huì)有錯(cuò)誤發(fā)生.
Serverstart-server選擇服務(wù)是否啟動(dòng)adb服務(wù)進(jìn)程. 
kill-server終止adb服務(wù)進(jìn)程. 
Shellshell通過(guò)遠(yuǎn)程shell命令來(lái)控制模擬器/設(shè)備實(shí)例.查看 獲取更多信息 for more information.
shell []連接模擬器/設(shè)施執(zhí)行shell命令,執(zhí)行完畢后退出遠(yuǎn)程shell端l.

  adb命令參數(shù)詳解

# adb --helpAndroid Debug Bridge version 1.0.29 -d - directs command to the only connected USB device returns an error if more than one USB device is present. -e - directs command to the only running emulator. returns an error if more than one emulator is running. -s - directs command to the USB device or emulator with the given serial number. Overrides ANDROID_SERIAL environment variable. -p - simple product name like 'sooner', or a relative/absolute path to a product out directory like 'out/target/product/sooner'. If -p is not specified, the ANDROID_PRODUCT_OUT environment variable is used, which must be an absolute path. devices - list all connected devices connect [:] - connect to a device via TCP/IP Port 5555 is used by default if no port number is specified. disconnect [[:]] - disconnect from a TCP/IP device. Port 5555 is used by default if no port number is specified. Using this command with no additional arguments will disconnect from all connected TCP/IP devices.device commands: adb push - copy file/dir to device adb pull [] - copy file/dir from device adb sync [ ] - copy host->device only if changed (-l means list but don't copy) (see 'adb help all') adb shell - run remote shell interactively adb shell - run remote shell command adb emu - run emulator console command adb logcat [ ] - View device log adb forward - forward socket connections forward specs are one of: tcp: localabstract: localreserved: localfilesystem: dev: jdwp: (remote only) adb jdwp - list PIDs of processes hosting a JDWP transport adb install [-l] [-r] [-s] [--algo --key --iv ] - push this package file to the device and install it ('-l' means forward-lock the app) ('-r' means reinstall the app, keeping its data) ('-s' means install on SD card instead of internal storage) ('--algo', '--key', and '--iv' mean the file is encrypted already) adb uninstall [-k] - remove this app package from the device ('-k' means keep the data and cache directories) adb bugreport - return all information from the device that should be included in a bug report. adb backup [-f ] [-apk|-noapk] [-shared|-noshared] [-all] [-system|-nosystem] [] - write an archive of the device's data to . If no -f option is supplied then the data is written to 'backup.ab' in the current directory. (-apk|-noapk enable/disable backup of the .apks themselves in the archive; the default is noapk.) (-shared|-noshared enable/disable backup of the device's shared storage / SD card contents; the default is noshared.) (-all means to back up all installed applications) (-system|-nosystem toggles whether -all automatically includes system applications; the default is to include system apps) ( is the list of applications to be backed up. If the -all or -shared flags are passed, then the package list is optional. Applications explicitly given on the command line will be included even if -nosystem would ordinarily cause them to be omitted.) adb restore - restore device contents from the backup archive adb help - show this help message adb version - show version numscripting: adb wait-for-device - block until device is online adb start-server - ensure that there is a server running adb kill-server - kill the server if it is running adb get-state - prints: offline | bootloader | device adb get-serialno - prints: adb status-window - continuously print device status for a specified device adb remount - remounts the /system partition on the device read-write adb reboot [bootloader|recovery] - reboots the device, optionally into the bootloader or recovery program adb reboot-bootloader - reboots the device into the bootloader adb root - restarts the adbd daemon with root permissions adb usb - restarts the adbd daemon listening on USB adb tcpip - restarts the adbd daemon listening on TCP on the specified portnetworking: adb ppp [parameters] - Run PPP over USB. Note: you should not automatically start a PPP connection. refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1 [parameters] - Eg. defaultroute debug dump local notty usepeerdnsadb sync notes: adb sync [ ] can be interpreted in several ways: - If is not specified, both /system and /data partitions will be updated. - If it is 'system' or 'data', only the corresponding partition is updated.environmental variables: ADB_TRACE - Print debug information. A comma separated list of the following values 1 or all, adb, sockets, packets, rwx, usb, sync, sysdeps, transport, jdwp ANDROID_SERIAL - The serial number to connect to. -s takes priority over this if given. ANDROID_LOG_TAGS - When used with the logcat option, only these debug tags are printed.
View Code

  查看所有當(dāng)前通過(guò)USB設(shè)備連接的設(shè)備

# adb devicesList of devices attachedemulator-5554 device0288424641407417 deviceHT9CRP810308 device
View Code

  指定某一個(gè)模擬器或真機(jī)

# adb -s emulator-5554 shell

  打印日志

# adb logcat

  上傳一個(gè)文件

# adb push ./sina_login.png /mnt/sdcard/DCIM/Camera/sina_login.png

  上傳一個(gè)目錄

# adb push ./emo /mnt/sdcard/DCIM/Camera/emo

  下載一個(gè)文件

# adb pull /mnt/sdcard/DCIM/Camera/IMG_20121130_102210.jpg ./IMG_20121130_102210.jpg280 KB/s (24741 bytes in 0.086s)

  下載一個(gè)目錄,這里不用設(shè)置遞歸參數(shù)-R,而且空目錄沒有下載下來(lái)

# adb pull /mnt/sdcard/GigaTalk ./GigaTalk

  安裝APK

# adb install BigramPaid.apk1872 KB/s (30541229 bytes in 15.930s) pkg: /data/local/tmp/BigramPaid.apk

  指定安裝到SD卡

# adb install -s BigramPaid.apk2262 KB/s (30541229 bytes in 13.180s) pkg: /sdcard/tmp/BigramPaid.apkSuccess

  再次安裝,提示錯(cuò)誤信息:已安裝

# adb install -s BigramPaid.apk2322 KB/s (30541229 bytes in 12.839s) pkg: /sdcard/tmp/BigramPaid.apkFailure [INSTALL_FAILED_ALREADY_EXISTS]
View Code

  重新安裝,保留原有數(shù)據(jù),允許共用包名及數(shù)字簽名

# adb install -r BigramPaid.apk2526 KB/s (30541229 bytes in 11.806s) pkg: /data/local/tmp/BigramPaid.apk

  保留數(shù)據(jù)以及緩存目錄

# adb uninstall com.gigabud.bigram

  重新加載/system 分區(qū)

# adb remountremount succeeded

  安裝APK過(guò)程中常見的一些錯(cuò)誤信息

int INSTALL_FAILED_ALREADY_EXISTS //程序已經(jīng)存在int INSTALL_FAILED_CONFLICTING_PROVIDER //存在同名的內(nèi)容提供者int INSTALL_FAILED_DEXOPT //dex優(yōu)化驗(yàn)證失敗int INSTALL_FAILED_DUPLICATE_PACKAGE //已存在同名程序int INSTALL_FAILED_INSUFFICIENT_STORAGE //沒有足夠的存儲(chǔ)空間int INSTALL_FAILED_INVALID_APK //無(wú)效的APKint INSTALL_FAILED_INVALID_URI //無(wú)效的鏈接int INSTALL_FAILED_MISSING_SHARED_LIBRARY //需求的共享庫(kù)已丟失int INSTALL_FAILED_NO_SHARED_USER //要求的共享用戶不存在int INSTALL_FAILED_OLDER_SDK //系統(tǒng)版本過(guò)舊int INSTALL_FAILED_REPLACE_COULDNT_DELETEint INSTALL_FAILED_SHARED_USER_INCOMPATIBLE //需求的共享用戶簽名錯(cuò)誤int INSTALL_FAILED_UPDATE_INCOMPATIBLE //版本不能共存int INSTALL_PARSE_FAILED_BAD_MANIFEST //錯(cuò)誤的MANIFEST配置文件int INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME //錯(cuò)誤的包名int INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID //錯(cuò)誤的共享用戶int INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING //證書編碼無(wú)效int INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES //證書不一致int INSTALL_PARSE_FAILED_MANIFEST_EMPTY //MANIFEST配置文件為空int INSTALL_PARSE_FAILED_MANIFEST_MALFORMED //MANIFEST配置文件非法int INSTALL_PARSE_FAILED_NOT_APK //不是有效的APK文件int INSTALL_PARSE_FAILED_NO_CERTIFICATES //無(wú)認(rèn)證證書int INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION //異常int INSTALL_SUCCEEDED //安裝成功int REPLACE_EXISTING_PACKAGE //包名已存在
View Code

 


啟用logcat日志

  Android日志系統(tǒng)提供了記錄和查看系統(tǒng)調(diào)試信息的功能。日志都是從各種軟件和一些系統(tǒng)的緩沖區(qū)中記錄下來(lái)的,緩沖區(qū)可以通過(guò) logcat 命令來(lái)查看和使用.

Logcat命令列表

OptionDescription
-b 加載一個(gè)可使用的日志緩沖區(qū)供查看,比如event 和radio . 默認(rèn)值是main 。具體查看Viewing Alternative Log Buffers.
-c清楚屏幕上的日志.
-d輸出日志到屏幕上.
-f 指定輸出日志信息的 ,默認(rèn)是stdout .
-g輸出指定的日志緩沖區(qū),輸出后退出.
-n 設(shè)置日志的最大數(shù)目 .,默認(rèn)值是4,需要和 -r 選項(xiàng)一起使用。
-r  時(shí)輸出日志,默認(rèn)值為16,需要和-f 選項(xiàng)一起使用.
-s設(shè)置默認(rèn)的過(guò)濾級(jí)別為silent.
-v 設(shè)置日志輸入格式,默認(rèn)的是brief 格式,要知道更多的支持的格式,參看Controlling Log Output Format .

使用logcat命令

  你可以用 logcat 命令來(lái)查看系統(tǒng)日志緩沖區(qū)的內(nèi)容

[adb] logcat [

  請(qǐng)查看Listing of logcat Command Options ,它對(duì)logcat命令有詳細(xì)的描述 .

  你也可以在你的電腦或運(yùn)行在模擬器/設(shè)備上的遠(yuǎn)程adb shell端來(lái)使用logcat 命令,也可以在你的電腦上查看日志輸出

$ adb logcat  //logcat

過(guò)濾日志輸出

  每一個(gè)輸出的Android日志信息都有一個(gè)標(biāo)簽和它的優(yōu)先級(jí).

  • 日志的標(biāo)簽是系統(tǒng)部件原始信息的一個(gè)簡(jiǎn)要的標(biāo)志。(比如:“View”就是查看系統(tǒng)的標(biāo)簽).
  • 優(yōu)先級(jí)有下列集中,是按照從低到高順利排列的:
    • V — Verbose (lowest priority)
    • D — Debug
    • I — Info
    • W — Warning
    • E — Error
    • F — Fatal
    • S — Silent (highest priority, on which nothing is ever printed)

  在運(yùn)行l(wèi)ogcat的時(shí)候在前兩列的信息中你就可以看到 logcat 的標(biāo)簽列表和優(yōu)先級(jí)別,它是這樣標(biāo)出的:/ .

  下面是一個(gè)logcat輸出的例子,它的優(yōu)先級(jí)就似乎I,標(biāo)簽就是ActivityManage:

I/ActivityManager( 585): Starting activity: Intent { action=android.intent.action...}

  為了讓日志輸出能體現(xiàn)管理的級(jí)別,你還可以用過(guò)濾器來(lái)控制日志輸出,過(guò)濾器可以幫助你描述系統(tǒng)的標(biāo)簽等級(jí).

  過(guò)濾器語(yǔ)句按照下面的格式描tag:priority ... tag 表示是標(biāo)簽, priority 是表示標(biāo)簽的報(bào)告的最低等級(jí).

  從上面的tag的信息中可以得到日志的優(yōu)先級(jí). 你可以在過(guò)濾器中多次寫tag:priority .

  這些說(shuō)明都只到空白結(jié)束。

  下面有一個(gè)列子,例子表示支持所有的日志信息,除了那些標(biāo)簽為”ActivityManager”和優(yōu)先級(jí)為”Info”以上的和標(biāo)簽為” MyApp”和優(yōu)先級(jí)為” Debug”以上的。 小等級(jí),優(yōu)先權(quán)報(bào)告為tag.

adb logcat ActivityManager:I MyApp:D *:S

  上面表達(dá)式的最后的元素 *:S ,,是設(shè)置所有的標(biāo)簽為'silent',所有日志只顯示有'View' and 'MyApp'的,用 *:S 的另一個(gè)用處是能夠確保日志輸出的時(shí)候是按照過(guò)濾器的說(shuō)明限制的,也讓過(guò)濾器也作為一項(xiàng)輸出到日志中.

  下面的過(guò)濾語(yǔ)句指顯示優(yōu)先級(jí)為warning或更高的日志信息:

adb logcat *:W

控制日志輸出格式

  日志信息包括了許多元數(shù)據(jù)域包括標(biāo)簽和優(yōu)先級(jí)。

  修改日志的輸出格式,可以顯示出特定的元數(shù)據(jù)域。可以通過(guò) -v 選項(xiàng)得到格式化輸出日志的相關(guān)信息。

  • brief — Display priority/tag and PID of originating process (the default format).
  • process — Display PID only.
  • tag — Display the priority/tag only.
  • thread — Display process:thread and priority/tag only.
  • raw — Display the raw log message, with no other metadata fields.
  • time — Display the date, invocation time, priority/tag, and PID of the originating process.
  • long — Display all metadata fields and separate messages with a blank lines.

  當(dāng)啟動(dòng)了logcat ,你可以通過(guò)-v 選項(xiàng)來(lái)指定輸出格式

[adb] logcat [-v ]

  下面是用 thread 來(lái)產(chǎn)生的日志格式:

adb logcat -v thread

  需要注意的是你只能-v 選項(xiàng)來(lái)規(guī)定輸出格式 option.

查看可用日志緩沖區(qū)

  Android日志系統(tǒng)有循環(huán)緩沖區(qū),并不是所有的日志系統(tǒng)都有默認(rèn)循環(huán)緩沖區(qū)。

  為了得到日志信息,你需要通過(guò)-b 選項(xiàng)來(lái)啟動(dòng)logcat 。如果要使用循環(huán)緩沖區(qū),你需要查看剩余的循環(huán)緩沖期

  • radio — 查看緩沖區(qū)的相關(guān)的信息.
  • events — 查看和事件相關(guān)的的緩沖區(qū).
  • main — 查看主要的日志緩沖區(qū)

  -b 選項(xiàng)使用方法:

[adb] logcat [-b ]

  下面的例子表示怎么查看日志緩沖區(qū)包含radio 和 telephony信息:

adb logcat -b radio

不完全匯總 

(1) 顯示全部日志信息:adb logcat

(2) 顯示某一TAG的日志信息:adb logcat -s TAG名稱

(3) 顯示某一TAG的某一級(jí)別的日志信息:adb logcat TAG名稱:級(jí)別.....TAG名稱:級(jí)別 *:S

  注:日志級(jí)別(V-verbose,D-debug,I-info,W-warning,E-error,F-fatal,S-silent),*:S(確保日志輸出的時(shí)候是按照過(guò)濾器的說(shuō)明限制)

(4) 顯示某一級(jí)別以上的全部日志信息:adb logcat *:級(jí)別

(5) 以某種格式顯示日志信息:adb logcat -v 格式

  注:日志格式(brief,process,tag,thread,raw,time,long)

(6) 顯示緩沖區(qū)中的日志信息:adb logcat -b 緩沖區(qū)類型

  注:緩沖區(qū)類型(radio-無(wú)線緩沖區(qū),events-事件緩沖區(qū),main-主緩沖區(qū),默認(rèn))

(7) 清理已經(jīng)存在的日志:adb logcat -c

(8) 將日志顯示在控制臺(tái)后退出:adb logcat -d

(9) 將日志輸出到文件:adb logcat -f 文件名



當(dāng)ADT Bundle中l(wèi)og日志不能正常顯示,而又不想重啟,則可用命令方式輸出日志:

本人常使用命令是:

輸出Bug類別的所有日志:      

adb logcat *:D

輸出指定Tag的日志信息:

      adb logcat -s  TAG名稱

清除日志信息:

     adb logcat -c


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    日本午夜福利视频免费观看| 日韩午夜福利高清在线观看| 高清不卡一卡二卡区在线 | 在线观看国产午夜福利| 人妻人妻人人妻人人澡| 欧美日韩精品久久亚洲区熟妇人| 欧美大黄片在线免费观看| 91麻豆视频国产一区二区| 日韩成人午夜福利免费视频| 日韩性生活片免费观看| 日韩精品视频高清在线观看| 人妻少妇系列中文字幕| 东京热男人的天堂一二三区| 亚洲男人的天堂色偷偷| 午夜精品黄片在线播放| 国产肥妇一区二区熟女精品| 91福利视频日本免费看看| 国产成人精品国内自产拍| 国产一区欧美一区日本道| 欧美日韩精品一区免费| 欧美精品久久99九九| 国产麻豆一区二区三区在| 亚洲国产中文字幕在线观看| 九九热在线视频精品免费| 东京热一二三区在线免| 亚洲人妻av中文字幕| 日本高清一道一二三区四五区| 欧美日韩亚洲巨色人妻| 91精品视频全国免费| 亚洲黄香蕉视频免费看| 果冻传媒在线观看免费高清| 欧美野外在线刺激在线观看| 亚洲第一视频少妇人妻系列| 日韩欧美国产三级在线观看| 国产自拍欧美日韩在线观看| 少妇在线一区二区三区| 情一色一区二区三区四| 欧美一区二区三区99| 久久精品欧美一区二区三不卡| 日本淫片一区二区三区| 欧美成人欧美一级乱黄|