乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Android 工具

       women1413 2016-09-24

      Android 開(kāi)發(fā)中, adb 是開(kāi)發(fā)者經(jīng)常使用的工具,是 Android 開(kāi)發(fā)者必須掌握的。

      Android Debug Bridge,Android 調(diào)試橋接器,簡(jiǎn)稱(chēng) adb ,該工具位于 /platform-tools/目錄下,其源碼位于/system/core/adb目錄下,是用于管理模擬器或真機(jī)狀態(tài)的萬(wàn)能工具。 adb 采用了客戶端-服務(wù)器模型,包括三個(gè)部分:

      1. 客戶端部分,運(yùn)行在開(kāi)發(fā)用的電腦上,可以在命令行中運(yùn)行adb命令來(lái)調(diào)用該客戶端,像 DDMS 這樣的 Android 工具也可以調(diào)用 adb 客戶端。
      2. 守護(hù)進(jìn)程部分,運(yùn)行于模擬器或手機(jī)的后臺(tái)。
      3. 服務(wù)端部分,是運(yùn)行在開(kāi)發(fā)用電腦上的后臺(tái)進(jìn)程,用于管理客戶端與運(yùn)行在模擬器或真機(jī)的守護(hù)進(jìn)程通信。

      adb 工具模型示意圖如下:

      Android 工具-adb

      adb 的工作原理

      當(dāng)啟動(dòng) adb 客戶端時(shí),客戶端首先檢查 adb 服務(wù)端進(jìn)程是否運(yùn)行,如果沒(méi)有運(yùn)行,則啟動(dòng)服務(wù)端。當(dāng)服務(wù)端啟動(dòng)時(shí),它會(huì)綁定到本地的 TCP5037 端口,并且監(jiān)聽(tīng)從 adb 客戶端發(fā)來(lái)的命令——所有 adb 客戶端都使用 5037 端口與 adb 服務(wù)端通信。

      接下來(lái)服務(wù)端與所有正在運(yùn)行的模擬器或手機(jī)連接。它通過(guò)掃描 5555-5585 之間的奇數(shù)號(hào)端口來(lái)搜索模擬器或手機(jī),一旦發(fā)現(xiàn) adb 守護(hù)進(jìn)程,就通過(guò)此端口進(jìn)行連接。需要說(shuō)明的是,每一個(gè)模擬器或手機(jī)使用一對(duì)有序的端口,偶數(shù)號(hào)端口用于控制臺(tái)連接,奇數(shù)號(hào)端口用于 adb 連接,例如:

      Emulator 1, console: 5554Emulator 1, adb: 5555Emulator 2, console: 5556Emulator 2, adb: 5557 ...

      即如果模擬器與 adb 在 5555 端口連接,則其與控制臺(tái)的連接就是 5554 端口。

      當(dāng)服務(wù)端與所有的模擬器建立連接之后,就可以使用 adb 命令來(lái)控制或者訪問(wèn)了。因?yàn)榉?wù)端管理著連接并且可以接收到從多個(gè) adb 客戶端的命令,所以可以從任何一個(gè)客戶端或腳本來(lái)控制任何模擬器或手機(jī)設(shè)備。

      補(bǔ)充

      1. 使用 adb 命令調(diào)試需要手機(jī)開(kāi)啟 開(kāi)發(fā)者模式 下的 USB 調(diào)試,在 Android 4.2 及更高的版本中,開(kāi)發(fā)者選項(xiàng)默認(rèn)是隱藏的,你可以去 設(shè)置——>關(guān)于手機(jī),然后連續(xù)點(diǎn)擊七次版本號(hào)即可。返回上層就可以在底部看見(jiàn) 開(kāi)發(fā)者模式 了。當(dāng)然有些定制的 ROM 開(kāi)啟方式會(huì)有點(diǎn)不一樣,這個(gè)就要去問(wèn) ROM 的開(kāi)發(fā)者了。
      2. 關(guān)于 USB 調(diào)試與計(jì)算機(jī)的 RSA 密鑰指紋配對(duì)。Google 官方原文如下:

        When you connect a device running Android 4.2.2 or higher to your computer, the system shows a dialog asking whether to accept an RSA key that allows debugging through this computer. This security mechanism protects user devices because it ensures that USB debugging and other adb commands cannot be executed unless you're able to unlock the device and acknowledge the dialog. This requires that you have adb version 1.0.31 (available with SDK Platform-tools r16.0.1 and higher) in order to debug on a device running Android 4.2.2 or higher.

      大意就是,你想使用 USB調(diào)試 就得啟用 USB調(diào)試 模式下的 RSA密鑰指紋。不然我就不給你用。

      1. 關(guān)于使用真機(jī)調(diào)試的更多信息可參考:Run Apps on a Hardware Device。
      adb 用法查詢模擬器或手機(jī)狀態(tài)

      了解 adb 服務(wù)端連接的模擬器或手機(jī)可以幫助更好的使用 adb 命令,這可以通過(guò) devices 命令來(lái)列舉當(dāng)前連接的設(shè)備:

      adb devices

      執(zhí)行結(jié)果是 adb 為每一個(gè)設(shè)備輸出以下?tīng)顟B(tài)信息:

      序列號(hào)(serialNumber):由 adb 創(chuàng)建用于唯一標(biāo)識(shí)設(shè)備的字符串,格式是 <設(shè)備類(lèi)型>-<端口號(hào)>,例如: emulator-5554連接狀態(tài)(state),其值是可能是下面的任意一種:offline — 未連接或未響應(yīng)device — 表示設(shè)備已經(jīng)連接到服務(wù)端。但需要注意的是,這個(gè)狀態(tài)并不表示 Android 系統(tǒng)已經(jīng)完全啟動(dòng)起來(lái)并且可操作,因?yàn)橄到y(tǒng)在啟動(dòng)的過(guò)程中就已經(jīng)連接 adb ,但這個(gè)狀態(tài)是正常的可操作狀態(tài)。no device - 表示沒(méi)有任何設(shè)備連接(樓主測(cè)試過(guò)程中沒(méi)有碰到過(guò) no device 的情況,沒(méi)連接設(shè)備就沒(méi)任何輸出)

      每一個(gè)設(shè)備的輸出形如:

      [serialNumber] [state]

      下面是 adb devices 命令和其執(zhí)行結(jié)果:

      $ adb devicesList of devices attached emulator-5554 deviceemulator-5556 deviceemulator-5558 device

      如果沒(méi)有模擬器或手機(jī)在運(yùn)行,運(yùn)行 adb devices 命令的執(zhí)行結(jié)果如下:

      $ adb devcesList of devices attached
      操作指定模擬器或手機(jī)

      如果有多個(gè)模擬器或手機(jī)正在運(yùn)行,當(dāng)使用 adb 命令的時(shí)候就需要指定目標(biāo)設(shè)備,這可以通過(guò)使用 -s選項(xiàng)參數(shù)實(shí)現(xiàn),用法如下:

      adb -s

      你可以使用 adb 命令指定序列號(hào)在特定的設(shè)備上執(zhí)行命令,這里可以先使用前面提到的 adb devices命令查詢?cè)O(shè)備的序列號(hào)信息。

      例如:

      adb -s emulator-5556 install helloWorld.apk

      需要注意的是,如果使用了 -s而沒(méi)有指定設(shè)備的話, adb 會(huì)報(bào)錯(cuò)。

      補(bǔ)充

      這是 Google 官方給出在多設(shè)備的情況下,不用 -s參數(shù)指定目標(biāo)設(shè)備的快捷方式,原文如下:

      If you have multiple devices available (hardware or emulated), but only one is an emulator, simply use the -e option to send commands to the emulator. Likewise if there's multiple devices but only one hardware device attached, use the -d option to send commands to the hardware device.

      大意就是:如果你有多個(gè)設(shè)備,即既有模擬器,又有真機(jī),但是模擬器只有一個(gè),那么你可以使用 -e參數(shù)想模擬器發(fā)送命令,用法如下:

      $ adb -e install helloWorld.apk//同理,如果有多個(gè)設(shè)備,但只有一個(gè)真機(jī),可以使用如下命令快速發(fā)送命令$ adb -d install helloWorld.apk
      安裝應(yīng)用

      使用 adb install命令可以從開(kāi)發(fā)用電腦中復(fù)制應(yīng)用程序并且安裝到模擬器或手機(jī)上,adb install命令必須指定待安裝的.apk文件的路徑:

      adb install [-lrtsdg] (-l: 鎖定該程序)(-r: 重新安裝該程序,保留應(yīng)用數(shù)據(jù))(-t: allow test packages)(-s: 將應(yīng)用安裝到 SD卡,不過(guò)現(xiàn)在手機(jī)好像都沒(méi)有 SD卡 了吧)(-d: 允許降版本號(hào)安裝,當(dāng)然只有 debug 包才能使用)(-g: 安裝完默認(rèn)授予所有運(yùn)行時(shí)權(quán)限,這個(gè)應(yīng)該對(duì) Android 6.0 及之后的版本才有效吧)

      更多關(guān)于創(chuàng)建 apk 文件可參考:Build And Running

      卸載應(yīng)用

      既然有安裝應(yīng)用的命令,那當(dāng)然有卸載應(yīng)用的命令。卸載應(yīng)用命令的格式如下:

      // 表示要卸載應(yīng)用的包名adb uninstall [-k] (-k:不刪除程序運(yùn)行所產(chǎn)生的數(shù)據(jù)和緩存目錄)
      端口轉(zhuǎn)發(fā)

      使用 adb forward命令轉(zhuǎn)發(fā)端口 — 將特定端口上的請(qǐng)求轉(zhuǎn)發(fā)到模擬器或手機(jī)的不同的端口上。下例是從 6100端口 轉(zhuǎn)到 7100端口 :

      adb forward tcp:6100 tcp:7100

      也可以使用UNIX命名的socket標(biāo)識(shí):

      adb forward tcp:6100 local:logd

      補(bǔ)充:關(guān)于adb forward命令的作用不是很明白,網(wǎng)上搜了下,大部分文章都是轉(zhuǎn)載了淺析 adb 命令 - adb forward,不知道這是不是原文,反正看不得不是很明白。有哪位大神能跟我講講嘛?

      與模擬器或手機(jī)傳輸文件

      使用 adb 命令 pullpush能從 Android 設(shè)備拷貝或復(fù)制文件到 Android 設(shè)備。跟install命令不同,pullpush命令允許拷貝和復(fù)制文件到任何位置。

      從模擬器或手機(jī)拷貝文件或文件夾(包括文件夾的子目錄)

      adb pull [-a] (-a:保留文件時(shí)間戳及屬性)

      將文件或文件夾(包括文件夾的子目錄)拷貝到模擬器或手機(jī)

      adb push

      比如,我想把桌面的 log.txt 復(fù)制到手機(jī)的 dev 目錄下,則命令如下:

      $ adb push /Users/littlejie/Desktop/log.txt /dev

      有時(shí)候,使用該命令復(fù)制文件到手機(jī)或從手機(jī)復(fù)制文件,會(huì)碰到如下提示:

      failed to copy 'log.txt' to '/dev/log.txt': Permission denied

      備注: Permission denied 這個(gè)問(wèn)題以前在使用 Windows 系統(tǒng)的時(shí)候碰到過(guò),現(xiàn)在轉(zhuǎn) Mac 后就沒(méi)有再遇到,難道是我打開(kāi)方式不對(duì)嘛?再補(bǔ)充一點(diǎn), Mac 上我運(yùn)行adb root命令真的有點(diǎn)一頭霧水,因?yàn)榫谷惶崾荆?/p>

      $ adb rootadbd is already running as root

      這是因?yàn)楫?dāng)前用戶沒(méi)有相應(yīng)的權(quán)限或者是 /dev 目錄不可寫(xiě)。解決方法如下:

      //方法一//已 root 權(quán)限啟動(dòng) adb 服務(wù)$ adb root//adb remount (重新掛載系統(tǒng)分區(qū),使系統(tǒng)分區(qū)重新可寫(xiě))$ adb remount//將文件復(fù)制到 /dev 目錄下$ adb push /Users/littlejie/Desktop/log.txt /dev
      //方法二:修改文件的讀寫(xiě)權(quán)限$ adb shell# su# chmod 777 /dev

      關(guān)于 Linux 下文件權(quán)限的更多內(nèi)容請(qǐng)參考:linux系統(tǒng)644、755、777權(quán)限詳解

      adb shell

      這里簡(jiǎn)單講一下 adb shell的使用,因?yàn)?code>adb shell的用法太多,功能太強(qiáng),完全可以專(zhuān)門(mén)分出一篇文章來(lái)記錄~不出意外,下周應(yīng)該能寫(xiě)完~有興趣的同學(xué)可以自己先去看 Google 的官方文檔:ADB Shell Commands

      adb shell 有兩種使用方式,一種是不進(jìn)入 remote shell 直接執(zhí)行命令行,格式如下:

      adb [-d|-e|-s ] shell

      還有一種是,進(jìn)入模擬器或手機(jī)的 remote shell 執(zhí)行,格式如下:

      adb [-d|-e|-s ] shell
      開(kāi)啟或關(guān)閉 adb 服務(wù)

      在某些情況下需要重啟 adb 服務(wù)來(lái)解決問(wèn)題,比如 adb 無(wú)響應(yīng)。這時(shí)你可以通過(guò) adb kill-server來(lái)實(shí)現(xiàn)這一操作。

      之后,通過(guò) adb start-server或者任意 adb 命令來(lái)重啟 adb 服務(wù)。

      $ adb kill-server$ adb start-server* daemon not running. starting it now on port 5037 ** daemon started successfully *$ adb kill-server$ adb devicesList of devices attached* daemon not running. starting it now on port 5037 ** daemon started successfully *emulator-5556 deviceemulator-5554 device
      無(wú)線調(diào)試

      平時(shí)我們都是使用 USB調(diào)試,但是現(xiàn)在也支持通過(guò) WIFI 進(jìn)行調(diào)試了。使用方式如下:

      1. 首先,你要將 Android 設(shè)備和 裝有 adb 的電腦連接到同一 Wi-Fi 網(wǎng)絡(luò)。其次,你需要配置好防火墻,否則很有可能導(dǎo)致 Wi-Fi 調(diào)試不能使用。
      2. 使用 USB數(shù)據(jù)線 將手機(jī)連接到電腦。
      3. 設(shè)置目標(biāo)設(shè)備監(jiān)聽(tīng) 5555端口 的 TCP/IP 連接。

      shell $ adb tcpip 5555

      1. 斷開(kāi)手機(jī)與電腦的 USB 連接。
      2. 查看手機(jī)的 IP地址 。例如,在 Nexus 設(shè)備上,你可以通過(guò)如下方式查看: 設(shè)置——>關(guān)于手機(jī)——>狀態(tài)——>IP地址。在 Androir Wear 上,你可以通過(guò)如下方式查看:設(shè)置——>Wi-Fi設(shè)置——>高級(jí)——>IP地址
      3. 通過(guò) IP 連接手機(jī)

      shell adb connect

      1. 確認(rèn)手機(jī)是否連接到電腦上

      shell $ adb devices List of devices attached :5555 device

      通過(guò)以上步驟,就可以開(kāi)心的享用 WiFi 調(diào)試了。如果沒(méi)有正常連接,可以按照下面的步驟檢查:

      1. 檢查電腦和手機(jī)是否還在同一個(gè) WiFi 網(wǎng)絡(luò)下
      2. 重新執(zhí)行一次 adb connect 命令
      3. 重啟 adb 服務(wù),然后重頭再來(lái)
      4. 檢查是否是防火墻的設(shè)置問(wèn)題

      這是一篇關(guān)于 Android 設(shè)備 USB調(diào)試 和 WiFi調(diào)試 相互切換的博文,博主寫(xiě)了一個(gè)腳本來(lái)實(shí)現(xiàn)這個(gè)過(guò)程,有興趣的同學(xué)可以去看看。

      補(bǔ)充
      • 獲取設(shè)備序列號(hào)

      shell $ adb shell emulator-5554

      • 查看 bugreport 報(bào)告

      shell //直接在終端輸出 $ adb bugreport //將 bugreport 輸出到指定文件 $ adb bugreport > file_path

      adb bugreport這個(gè)命令非常簡(jiǎn)單,但是在實(shí)際應(yīng)用中非常有用,它會(huì)輸出從開(kāi)機(jī)之后詳細(xì)的 dumpsys 、 dumpstate 和 logcat 信息,是一份完整的日志記錄。對(duì)分析用戶行為、異常信息、系統(tǒng)狀態(tài)有很大的參考作用。一般我們會(huì)把 bugreport 導(dǎo)出到電腦上分析。

      bugreport 的詳細(xì)使用可以參考 Baniel01的這篇Android adb bugreport工具分析和使用文章,里面有很詳細(xì)的介紹。

      • 查看設(shè)備的 log

      shell $ adb logcat

      • 查看 adb 的幫助
        這個(gè)命令很簡(jiǎn)單,但是也很實(shí)用,如果你不知道該使用哪個(gè)命令,那么使用 adb 幫助命令你能查看到大部分 adb 命令的作用和使用方法。

      shell $ adb help

      • 重啟手機(jī)
        有時(shí)候,手動(dòng)關(guān)機(jī)太麻煩,那就來(lái)個(gè)命令行吧~

      shell adb reboot

      • 以 root 權(quán)限開(kāi)啟 adb 守護(hù)進(jìn)程

      shell //此命令會(huì)重啟守護(hù)進(jìn)程 $ adb root //不以 root 權(quán)限開(kāi)啟 adb 守護(hù)進(jìn)程 $ adb unroot

      總結(jié)

      以上就是 adb 命令的常見(jiàn)用法,大部分翻譯自 Android Debug Bridge,其中加了一些個(gè)人總結(jié)。有些不常用的 adb 命令沒(méi)有介紹,更多 adb 用法請(qǐng)見(jiàn):Adb Command Summary。文中如有紕漏,歡迎大家留言指出。

      微博:厲圣杰

      微信:

      參考:

      1. Android Debug Bridge
      2. 淺析 adb 命令 - adb forward
      3. Android_ADB_通過(guò)WIFI或USB方式完成調(diào)試
      4. Android adb bugreport工具分析和使用

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(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)論公約

        類(lèi)似文章 更多