主頁 > 移動端開發 > 玩轉Android adb命令(adb降級)

玩轉Android adb命令(adb降級)

2021-11-08 10:19:49 移動端開發

原文鏈接?

玩轉Android adb命令(adb降級)

1.adb簡介

adb具有安裝卸載apk、拷貝推送檔案、查看設備硬體資訊、查看應用程式占用資源、在設備執行shell命令等功能,

圖片

在Android SDK安裝目錄的platform-tools目錄下找到adb工具,

圖片

adb在某種程度上有很大權限的,因為adb的設計初衷是為了方便開發人員除錯,因此必然需要暴露一些權限以外的介面,利用這個特性可以繞開權限機制在非Root非定制機上做一些操作,

2.adb架構

adb是一個C/S架構的應用程式,由三部分組成

(1).運行在pc端的adb client

命令列程式”adb”用于從shell或腳本中運行adb命令,首先,“adb”程式嘗試定位主機上的adb服務器,如果找不到adb服務器,“adb”程式自動啟動一個adb服務器,接下來,當設備的adbd和pc端的adb server建立連接后,adb client就可以向adb servcer發送服務請求;

(2).運行在pc端的adb server

adb Server是運行在主機上的一個后臺行程,它的作用在于檢測USB埠感知設備的連接和拔除,以及模擬器實體的啟動或停止,adb Server還需要將adb client的請求通過usb或者tcp的方式發送到對應的adbd上;

(3)運行在設備端的常駐行程adb demon(adbd)

程式“adbd”作為一個后臺行程在Android設備或模擬器系統中運行,它的作用是連接adb服務器,并且為運行在主機上的客戶端提供一些服務;

3.adb埠被占用

5037為adb默認埠,若5037埠被占用的解決方法

(1).找到使用該埠的行程pid

netstat -aon|findstr 5037

(2).通過pid找到對應的行程名(便于定位,可以跳過)

tasklist /fi "pid eq 5162"

(3).使用命令終止該命令的運行

taskkill /pid 5162 /f

4.基本用法

為命令指定目標設備

如果有多個設備/模擬器連接,則需要為命令指定目標設備

圖片

adb devicesadb -s 10.92.164.26:5555 install test.apk

啟動adb server命令

adb start-server

停止adb server命令

adb kill-server

查看adb版本

adb version

以root權限運行adbd

adb的運行原理是PC端的adb server與手機端的守護行程adbd建立連接,然后PC端的adb client通過adb server轉發命令,adbd接收命令后決議運行,

如果adbd以普通權限執行,有些需要root權限才能執行的命令無法直接用adb xxx執行,這時可以adb shell然后su后執行命令,也可以讓adbd以root權限執行,就能隨意執行高權限命令,

adb root

有些手機root后也無法通過adb root命令讓adbd以root權限執行

adbd cannot run as root in production builds

先安裝

adbd Insecure

然后

adb root

指定adb server的網路埠

adb -P <port> start-server

讓設備在5555埠監聽TCP/IP連接

adb tcpip 5555

通過IP地址連接設備

adb connect <device-ip-address>

斷開無線連接

adb disconnect <device-ip-address>

無線連接(無需借助USB線)

需要root權限

susetprop service.adb.tcp.port 5555

找到Android設備的IP地址

restart adbdstop adbdstart adbd

5.應用管理

查看應用串列

adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]

adb shell pm list packages的基礎上可以加一些引數進行過濾查看不同的串列,支持的過濾引數,如下所示:

圖片

所有應用

adb shell pm list packages

系統應用

adb shell pm list packages -s

第三方應用

adb shell pm list packages -3

安裝apk

adb install [-lrtsdg] <path_to_apk>

adb install后面可以跟一些可選引數來控制安裝apk的行為,可用引數及含義,如下所示:

圖片

圖片

圖片

圖片

常見安裝失敗輸出代碼、含義及可能的解決辦法,如下所示:

圖片

圖片

圖片

圖片

卸載應用

adb uninstall [-k] <packagename>

清除應用資料與快取

adb shell pm clear <packagename>

查看前臺Activity

adb shell dumpsys activity activities | grep mFocusedActivity

查看正在運行的Services

adb shell dumpsys activity services [<packagename>]

查看應用詳細資訊

adb shell dumpsys package <packagename>

6.與應用互動

主要是使用am <command>命令,常用的<command>

圖片

<INTENT>引數很靈活,和寫Android程式時代碼里的Intent相對應,

用于決定intent物件的選項如下:

圖片

<INTENT>里還能帶資料,就像寫代碼時的Bundle一樣

圖片

調起Activity

adb shell am start [options] <INTENT>adb shell am start -n com.tx.mm/.ui.LauncherUIadb shell am start -n org.mazhuang.boottimemeasure/.MainActivity --es "toast" "hello, world"

調起Service???????

adb shell am startservice [options] <INTENT>adb shell am startservice -n com.tx.mm/.plugin.accountsync.model.AccountAuthenticatorService

發送廣播???????

adb shell am broadcast -a android.intent.action.BOOT_COMPLETEDadb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n org.mazhuang.boottimemeasure/.BootCompletedReceiver

圖片

圖片

強制停止應用???????

adb shell am force-stop <packagename>adb shell am force-stop com.tx.mobilesafe

禁用應用和啟動???????

adb shell pm disable-user <packagename>adb shell pm disable <packagename>adb shell pm enable <packagename>

撤消應用程式的權限

(1).向應用授予權限,只能授予應用程式宣告的可選權限???????

adb shell pm grant <packagename> <PACKAGE_PERMISSION>adb -d shell pm grant packageName android.permission.BATTERY_STATS

(2).取消應用授權

adb shell pm revoke <packagename> <PACKAGE_PERMISSION>

選項--user user_id要禁用的用戶

滑動解鎖

adb shell input swipe 300 1000 300 500

7.查看日志

Android系統的日志分為兩部分,底層的Linux內核日志輸出到/proc/kmsg,Android的日志輸出到/dev/log,

圖片

按tag和級別過濾日志???????

adb logcat ActivityManager:I MyApp:D *:Sadb logcat -v long ActivityManager:I *:S

清空日志

adb logcat -c

內核日志

adb shell dmesg

8.查看設備資訊

型號

adb shell getprop ro.product.model

電池狀況

adb shell dumpsys battery

螢屏解析度

adb shell wm size

螢屏密度

adb shell wm density

顯示屏引數

adb shell dumpsys window displays

android_id

adb shell settings get secure android_id

IMEI

adb shell dumpsys iphonesubinfo

Android系統版本

adb shell getprop ro.build.version.release

IP地址

adb shell ifconfig "| grep Mask"

Mac地址

adb shell cat /sys/class/net/wlan0/address

CPU資訊

adb shell cat /proc/cpuinfo

記憶體資訊

adb shell cat /proc/meminfo

更多硬體與系統屬性

adb shell cat /system/build.prop

可通過adb shell getprop <屬性名>命令單獨查看

圖片

adb shell cat /system/build.prop | grep ro.product.cpu.abi

修改設定

修改設定之后,運行恢復命令有可能顯示仍然不太正常,可以運行adb reboot重啟設備,或手動重啟,

修改設定的原理主要是通過settings命令修改如下路徑里存放的設定值

/data/data/com.android.providers.settings/databases/settings.db

關閉USB除錯模式

adb shell settings put global adb_enabled 0

狀態欄和導航欄的顯示隱藏

adb shell settings put global policy_control <key-values>

圖片

表示設定在所有界面下都同時隱藏狀態欄和導航欄

adb shell settings put global policy_control immersive.full=*

表示設定在包名為com.package1和com.package2的應用里隱藏狀態欄,在除了包名為com.package3的所有應用里隱藏導航欄

adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3

恢復正常模式

adb shell settings put global policy_control null

螢屏截圖

adb shell screencap -p /sdcard/sc.png

Linux和Windows

adb shell screencap -p | sed "s/\r$//" > sc.png

Mac OS X

adb shell screencap -p | gsed "s/\r$//" > sc.png

錄制螢屏

adb shell screenrecord /sdcard/filename.mp4

重新掛載system磁區為可寫???????

adb shellsumount

重新掛載

mount -o remount,rw -t yaffs2 /dev/block/platform/msm_sdcc.1/by-name/system /system

查看連接過的WiFi密碼???????

adb shellsucat /data/misc/wifi/*.conf

重啟手機

adb reboot

檢測設備是否已root???????

adb shellsu

使用Monkey進行壓力測驗

adb shell monkey -p <packagename> -v 500

開啟WiFi???????

adb rootadb shell svc wifi enable

關閉WiFi???????

adb rootadb shell svc wifi disable

設定wifi優先,有網路和wifi情況下優先使用wifi

adb shell svc wifi prefer

開啟/關閉資料流量???????

svc data disableadb shell svc data enable adb shell svc data prefer

9.刷機相關命令

重啟到Recovery模式

adb reboot recovery

從Recovery重啟到Android

adb reboot

重啟到Fastboot模式

adb reboot bootloader

查看行程

adb shell ps

圖片

查看實時資源占用情況

adb shell top

圖片

查看行程UID

adb shell dumpsys package <packagename> | grep userId=

圖片

10.安全相關

啟用SELinux???????

adb rootadb shell setenforce 1

禁用SELinux???????

adb rootadb shell setenforce 0

啟用dm_verity???????

adb rootadb enable-verity

禁用dm_verity???????

adb rootadb disable-verity

11.常見問題

啟動adb server失敗

adb server行程想使用的5037埠被占用???????

netstat -ano | findstr LISTENINGtaskkill /PID 12418

重啟adb

推薦文章

Android系統run-as命令原理(權限訪問)

Android系統中run-as和su命令的原始碼決議(升降權限)

圖片

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/352257.html

標籤:其他

上一篇:反編譯獲取apk安裝包源代碼步驟

下一篇:首次開源分享:Android Framework 開發原理決議,突破面試難關

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【從零開始擼一個App】Dagger2

    Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......

    uj5u.com 2020-09-10 06:57:59 more
  • Flutter Weekly Issue 66

    新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......

    uj5u.com 2020-09-10 06:58:52 more
  • Proguard 常用規則

    介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。

    ......

    uj5u.com 2020-09-10 06:59:00 more
  • Android 開發技術周報 Issue#292

    新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......

    uj5u.com 2020-09-10 07:00:37 more
  • AutoFitTextureView Error inflating class

    報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......

    uj5u.com 2020-09-10 07:00:41 more
  • 根據Uri,Cursor沒有獲取到對應的屬性

    Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......

    uj5u.com 2020-09-10 07:00:44 more
  • Android連載29-持久化技術

    一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......

    uj5u.com 2020-09-10 07:00:47 more
  • Android Camera2Video整合到自己專案里

    背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......

    uj5u.com 2020-09-10 07:00:50 more
  • Android 開發技術周報 Issue#293

    新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......

    uj5u.com 2020-09-10 07:01:38 more
  • 海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟

    掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......

    uj5u.com 2020-09-10 07:01:43 more
最新发布
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:40:31 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:40:11 more
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:39:36 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:39:13 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:16:23 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:16:15 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:15:46 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:14:53 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:14:08 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:08:34 more