一、如何使用電腦連接夜神模擬器(手機(jī)????)
(1)adb devices? 連接設(shè)備?
? ? ? ? 語法: adb devices

(2)打開模擬器的關(guān)于手機(jī)→點(diǎn)擊多次版本號→處于開發(fā)模式→返回上一級→點(diǎn)擊開發(fā)者模式→點(diǎn)擊usb調(diào)試模式


(3)如果adb devices 沒有出現(xiàn) 127.0.0.1:62001的話 ,默認(rèn)為是沒有連接設(shè)備,請連接設(shè)備。
? ? ? ? ?語法: adb conect 127.0.0.1:62001

(4)連接完成后,再次輸入 adb? devices ,跟(1)一致,就表示連接成功了,然后可以操作了。

二、ADT、SDK、ADB——概念補(bǔ)充
? ? (1)ADT(Android development tools) ——Android開發(fā)工具。在Eclipse上調(diào)用各種與Android有關(guān)的插件,便于ADT
????(2)SDK(software development kit)——軟件開發(fā)部件。要用到各種Android平臺,好比Android2.3等,便要有SDK
????(3)ADB(重點(diǎn))(Android debug bride)——是用來連接安卓手機(jī)和PC端的橋梁,通過adb服務(wù),在pc端命令行界面對手機(jī)或模擬器進(jìn)行全面的操作
三、ADB常用命令
? ? (1)adb --help? 查看幫助手冊

????(2)adb devices? 檢測連接到電腦的安卓設(shè)備,這個是會經(jīng)常用到的檢測命令

? ? (3)adb connect / disconnect? ? iP:端口號,通過wifi進(jìn)行遠(yuǎn)程連接手機(jī)進(jìn)行調(diào)試,手機(jī)和電腦在連接同一個路由器

? ? (4)adb? shell ——登錄設(shè)備shell(命令行的人機(jī)界面),跟linux的命令行界面類似,相當(dāng)于遠(yuǎn)程操作命令

? ? (5)adb? pull(理解為下載) ——<手機(jī)文件路徑> <真機(jī)路徑> ——從Android手機(jī)拉取到本機(jī)電腦中


? ? (6)adb push(理解為上傳)——?<真機(jī)路徑>?<手機(jī)文件路徑> ——從本地電腦中推送(發(fā)送)到手機(jī)中


? ? (7)adb install 包名.apk——為了獲取apk的安裝包所在地址,可以直接把a(bǔ)pk拖到cmd的窗口獲取,返回Success說明安裝成功了。


? ? (8)adb uninstall 應(yīng)用包名 ——卸載應(yīng)用包名 (注意:安裝的包名和應(yīng)用包名不一致)
? ? ? ? ? ? 獲取應(yīng)用包名第一種方法:進(jìn)入 /data/data/目錄查看應(yīng)用包名? ??
?????????????獲取應(yīng)用包名第二種方法:就是(9),打開安裝的app,然后輸入(9)的命令。? ? ? ?


? ? (9)adb shell dumpsys activity | find "mFocusedActivity"??——查看前臺應(yīng)用包名

? ? (10)adb logcat ——打印log日志信息?

三、logcat——日志文件? ??
(1)Android日志系統(tǒng)提供了記錄和查看系統(tǒng)調(diào)試信息的功能,日志都是從各種軟件和一些系統(tǒng)的緩沖區(qū)記錄下來的,緩沖區(qū)可以通過logcat命令來查看和使用
(2)使用方法: adb? logcat? [ 選項(xiàng)參數(shù) ]? ?[ <fiter-spec> ]


(3)開發(fā)者選項(xiàng)。有個選項(xiàng)叫做"日志記錄器緩沖區(qū)大小",默認(rèn)是256K,日志是循環(huán)寫入環(huán)形緩沖區(qū) 的,在通常情況下,寫滿時最舊的日志會被刪除以新輸出的日志留內(nèi)存空間——真機(jī)設(shè)置,模擬器一般沒有
四、logcat日志文件分析

? ? (1)由五部分組成: 1.寫下日志時的時間,如圖中12-12 01:00:57.857
? ? (2)2.優(yōu)先級,在Android中,日志的優(yōu)先級從低到高分以下幾種
? ? ? ? ? ? ---V ——Verbose(啰嗦,最低級別,開發(fā)調(diào)試中的一些詳細(xì)信息,僅在開發(fā)中使用,不可以發(fā)布產(chǎn)品輸出)
? ? ? ? ? ? ---D ——Debug(調(diào)試,用于調(diào)試的信息,可以在發(fā)布產(chǎn)品關(guān)閉,比較常見)
? ? ? ? ? ? ---I ——Info (信息,一般提示性的信息)
? ? ? ? ? ? ---W ——warning (警告)
? ? ? ? ? ? ---E ——error(錯誤,已經(jīng)出現(xiàn)可影響運(yùn)行的錯誤,比如應(yīng)用crash時輸出的日志)
? ? (3)標(biāo)簽(tag),標(biāo)明日志發(fā)起者和方便日志的過濾篩選,如上中ActivityManger。類和模塊
? ? (4)Pid(進(jìn)行PID)
? ? (5)正文,本日志的主體內(nèi)容
? ? 五、演示如何日志定位,抓取錯誤
? ? (1)遇到crash發(fā)生的錯誤,立馬輸入 adb logcat -v time > 保存的文件路徑
? ? (2)然后根據(jù)報(bào)錯關(guān)鍵字(exception)和報(bào)錯時間和來定位錯誤所在的位置

? ? (3)搜索fatal /caused by 關(guān)鍵字


????(5)搜索 Force Finishing 關(guān)鍵字

六、何為ANR?
????(1)ANR全名(APPlication Not Responding),也就是應(yīng)用無響應(yīng)當(dāng)操作一段時間內(nèi)系統(tǒng)無法處理時,系統(tǒng)層面會彈出以下圖的ANR對話窗口

????(2)為用戶在主線程長時間被阻塞時提供處理交互,提高用戶體驗(yàn)
? ? (3)Android系統(tǒng)一種自身檢測機(jī)制
? ? (4)遇到anr這種問題,不是要提交bug,而是要建議開發(fā)人員優(yōu)化這個問題
七、演示anr報(bào)錯/日志定位
? ? (1)發(fā)現(xiàn)異常bug立馬保存日志
? ? (2)根據(jù)關(guān)鍵字(Anr)和日志時間 來定位日志錯誤? ? ?(但是并不是想要的結(jié)果,不存在java,at的錯誤)

????(3)系統(tǒng)在anr發(fā)生時,會通過三種方式保存記錄信息
? ? ? ? ? ? ? ① ---Logcat日志 ——以上都是logcat)
? ? ? ? ? ? ? ②---Trace文件 ——通過? /data / anr/ traces.txt 來分析
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????? ——Dump stack trace 信息
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????? ——Dump 的進(jìn)程包括:當(dāng)前應(yīng)用進(jìn)程,父進(jìn)程,主進(jìn)程,persistent進(jìn)程,以及cpu占用率排在前幾位的(最多五個)進(jìn)程?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????? ——ps:(只能記錄最后一次發(fā)生的anr信息,很容易被替換掉)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????? ——操作方法:(文件在 系統(tǒng)的 /data /anr / 目錄中)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ——操作方法:進(jìn)入對應(yīng)目錄,并且吧traces.文件 下載到本地

? ? ? ? ? ? ? ③---DropBox服務(wù)?
? ? ? ? ? ? ? ? ? ? ——data/ anr / traces.txt 文件里面只能保存最后一次發(fā)生anr的traces信息? ?
? ? ? ? ? ? ? ? ? ? ——通過dropbox可以收集系統(tǒng)一段時間內(nèi)的異常信息(anr,crash)
? ? ? ? ? ? ? ? ? ? ——/data / system / dropbox 是dropbox 指定的文件存放位置
