adb devices 查看連接設(shè)備
adb reboot重啟
adb reboot recovery重啟到 rec
adb reboot bootloader重啟到 bootloader
adb install xxxx.apk安裝 apk
adb uninstall xxx.apkpkgname卸載 apk 可以使用 [-k] 參數(shù),即 adb uninstall -k xxx.apkpkgname ,這里的 xxxx.apkpkgname需要使用包名,可以利用 pm 命令列出 adb shell pm list packages (這個(gè)除了極特殊用途外,用處不大)
adb shell getprop獲取系統(tǒng)設(shè)置
adb sideload xxx.zip adb刷機(jī)
adb push xxxx /sdcard/推送電腦文件到手機(jī),其中的 xxxx 是電腦上的文件路徑,yyyy 是手機(jī)上的文件路徑,比如我要推送 “C 盤 adb 目錄下的 adb.exe” 到手機(jī)的 “/data/media/0” 目錄下,我就需要命令 adb push C:\adb\adb.exe /data/media/0;
adb pull yyyy xxxx獲取手機(jī)文件到電腦,其中 yyyy 是手機(jī)路徑及文件,xxxx 是電腦路徑,比如我要獲取 “手機(jī)上的 /system/framework” 文件夾到 “電腦 D 盤下的 framework 文件夾”,我就需要 adb pull /system/framework D:\framework
設(shè)置手機(jī)上app進(jìn)入調(diào)試模式
adb shell am set-debug-app -w com.xxx.app.xxx
adb shell am set-debug-app -w com.xxx.apps.android.xxx
adb shell am set-debug-app -w --persistent com.xxx.app.xxx
adb shell am clear-debug-app清除app調(diào)試模式
adb shell /system/bin/logcat -b main查看logcat
adb shell dumpsys window displays (簡(jiǎn)單方式:adb shell wm size) 獲取屏幕分辨率
adb shell wm density獲取屏幕dpi
adb shell am display-size 1280x800重寫模擬器/設(shè)備顯示大小
adb shell am display-density 480重寫模擬器/設(shè)備顯示密度
adb shell am start -n com.xxx.apps.xxx.overseas/ui.StartPageActivity -d paramStr//啟動(dòng)某個(gè)app的某個(gè)activity(可能需要配置android:exported="true",獲取參數(shù):getIntent().getDataString())
adb shell dumpsys activity activities查看全部任務(wù)棧
adb shell dumpsys activity activities | grep ResumedActivity查看當(dāng)前activity
adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p'限制僅輸出Running Activities列表
adb shell am start com.android.settings//設(shè)置主頁(yè)面
adb shell ps | grep com.survival.last//查看進(jìn)程pid
adb shell "am force-stop com.survival.last"強(qiáng)制結(jié)束App
adb logcat -v time | grep ActivityManager查看activity跳轉(zhuǎn)日志
adb shell input keyboard text "abc"//模擬鍵盤輸入
adb shell input keyevent3(home鍵) 4(back鍵) 187(最近任務(wù)) 19 (up鍵) 24 (volume+鍵) 25 (volume-鍵)
adb shell input tap 500 500// 模擬點(diǎn)擊屏幕指定位置,不過在android中tap好像失效了不知道為什么
adb shell input swipe 500 800 500 300 // 模擬滑動(dòng),從(500,800)滑動(dòng)到(500,300)
adb shell cat /proc/cpuinfo能夠看明白手機(jī)指令集,是32位還是64位
adb shell getprop ro.product.cpu.abi查看手機(jī)CPU的ABIs
adb shell top(adb shell top -H) 查看CPU/內(nèi)存等占用率的命令
adb shell ps -AAndroid系統(tǒng)高版本查看進(jìn)程信息
adb shell ps -A -T | grep pid (adb shell ps -T -p pid)Android系統(tǒng)高版本查看進(jìn)程的線程信息
adb shell dumpsys meminfo <package_name>重點(diǎn)關(guān)注如下幾個(gè)字段:Native/Dalvik 的 Heap 信息,具體在上面的第一行和第二行,它分別給出的是JNI層和Java層的內(nèi)存分配情況,如果發(fā)現(xiàn)這個(gè)值一直增長(zhǎng),則代表程序可能出現(xiàn)了內(nèi)存泄漏。Total 的 PSS 信息
這個(gè)值就是你的應(yīng)用真正占據(jù)的內(nèi)存大小,通過這個(gè)信息,你可以輕松判別手機(jī)中哪些程序占內(nèi)存比較大了。
申請(qǐng)最大內(nèi)存使用
adb shell getprop dalvik.vm.heapgrowthlimit
adb shell getprop dalvik.vm.heapsize
adb shell getprop dalvik.vm.heapstartsize
說明:heapsize參數(shù)表示單個(gè)進(jìn)程可用的最大內(nèi)存,但如果存在heapgrowthlimit參數(shù),則以heapgrowthlimit為準(zhǔn).
heapsize表示不受控情況下的極限堆,表示單個(gè)虛擬機(jī)或單個(gè)進(jìn)程可用的最大內(nèi)存。而android上的應(yīng)用是帶有獨(dú)立虛擬機(jī)的,也就是每開一個(gè)應(yīng)用就會(huì)打開一個(gè)獨(dú)立的虛擬機(jī)(這樣設(shè)計(jì)就會(huì)在單個(gè)程序崩潰的情況下不會(huì)導(dǎo)致整個(gè)系統(tǒng)的崩潰)。
注意:在設(shè)置了heapgrowthlimit的情況下,單個(gè)進(jìn)程可用最大內(nèi)存為heapgrowthlimit值。在android開發(fā)中,如果要使用大堆,需要在manifest中指定android:largeHeap為true,這樣dvm heap最大可達(dá)heapsize
設(shè)置logcat緩存大小
adb logcat -G 100M
adb logcat -g
將手機(jī)上已安裝的apk拉下來
1 .定位apk所在系統(tǒng)路徑 :adb shell pm path com.google.android.youtube
將上一步apk查看到的路徑從手機(jī)把a(bǔ)pk pull下來: adb pull /system/app/YouTube/YouTube.apk
adb wifi 調(diào)試方法(手機(jī)和電腦連接的是同一個(gè) wifi)
手機(jī)USB 連接電腦: adb tcpip 5555
查看手機(jī) ip 地址: adb shell ifconfig wlan0
adb wifi 連接手機(jī): adb connect 192.168.0.142:5555
斷開adb: adb disconnect 192.168.0.142
缺點(diǎn):手機(jī)斷電重啟后,就要再用USB線,開啟手機(jī)ADB
如果執(zhí)行命令時(shí)遇到:more than one device/emulator 的錯(cuò)誤
那么就需要通過:adb devices列出所有設(shè)備列表
然后通過:給命令加上-s的參數(shù):adb -s 192.168.137.95:5555 logcat就可以了
AndroidStduio項(xiàng)目構(gòu)建相關(guān)命令
keytool -list -v -keystore <keystore-file>
./gradlew processDebugManifest --stacktrace可以專門處理manifest合并沖突的問題
./gradlew assembleDebug --stacktrace --info
./gradlew assembleRelease --stacktrace --info
./gradlew assembleDebug --profile//生成一份本地的耗時(shí)分析報(bào)告
./gradlew assembleDebug --scan
./gradlew clean
上面是對(duì)主項(xiàng)目執(zhí)行默認(rèn)的構(gòu)建,需要指定module構(gòu)建,命令格式類似:
./gradlew :moduleName:assembleRelease --stacktrace --info
./gradlew :app:dependencies --info 查看包的依賴關(guān)系(相同的庫(kù)存在多個(gè)版本時(shí), gradle 會(huì)自動(dòng)使用最高版本的庫(kù) , 上圖中 后面帶有 (*) 的庫(kù)就表示 這個(gè)庫(kù) 有被覆蓋過)
./gradlew :app:dependencies > log.txt 查看依賴庫(kù)會(huì)生成大量?jī)?nèi)容,并且無法看到全部信息,為了方便查看,將輸出信息寫入文本文件中
adb命令打開系統(tǒng)設(shè)置界面打開系統(tǒng)設(shè)置主界面 adb shell am start com.android.settings/com.android.settings.Settings
安全adb shell am start com.android.settings/com.android.settings.SecuritySettings
手機(jī)無線信息 adb shell am start com.android.settings/com.android.settings.RadioInfo
其他界面完整類名(命令同上)
com.android.settings.AccessibilitySettings 輔助功能設(shè)置
com.android.settings.ActivityPicker 選擇活動(dòng)
com.android.settings.ApnSettings APN設(shè)置
com.android.settings.ApplicationSettings 應(yīng)用程序設(shè)置
com.android.settings.BandMode 設(shè)置GSM/UMTS波段
com.android.settings.BatteryInfo 電池信息
com.android.settings.DateTimeSettings 日期和時(shí)間設(shè)置
com.android.settings.DateTimeSettingsSetupWizard 日期和時(shí)間設(shè)置
com.android.settings.DevelopmentSettings 開發(fā)者設(shè)置
com.android.settings.DeviceAdminSettings 設(shè)備管理器
com.android.settings.DeviceInfoSettings 關(guān)于手機(jī)
com.android.settings.Display 顯示——設(shè)置顯示字體大小及預(yù)覽
com.android.settings.DisplaySettings 顯示設(shè)置
com.android.settings.DockSettings 底座設(shè)置
com.android.settings.IccLockSettings SIM卡鎖定設(shè)置
com.android.settings.InstalledAppDetails 語(yǔ)言和鍵盤設(shè)置
com.android.settings.LanguageSettings 語(yǔ)言和鍵盤設(shè)置
com.android.settings.LocalePicker 選擇手機(jī)語(yǔ)言
com.android.settings.LocalePickerInSetupWizard 選擇手機(jī)語(yǔ)言
com.android.settings.ManageApplications 已下載(安裝)軟件列表
com.android.settings.MasterClear 恢復(fù)出廠設(shè)置
com.android.settings.MediaFormat 格式化手機(jī)閃存
com.android.settings.PhysicalKeyboardSettings 設(shè)置鍵盤
com.android.settings.PrivacySettings 隱私設(shè)置
com.android.settings.ProxySelector 代理設(shè)置
com.android.settings.RadioInfo 手機(jī)信息
com.android.settings.RunningServices 正在運(yùn)行的程序(服務(wù))
com.android.settings.SecuritySettings 位置和安全設(shè)置
com.android.settings.Settings 系統(tǒng)設(shè)置
com.android.settings.SettingsSafetyLegalActivity 安全信息
com.android.settings.SoundSettings 聲音設(shè)置
com.android.settings.TestingSettings 測(cè)試——顯示手機(jī)信息、電池信息、使用情況統(tǒng)計(jì)、Wifi information、服務(wù)信息
com.android.settings.TetherSettings 綁定與便攜式熱點(diǎn)
com.android.settings.TextToSpeechSettings 文字轉(zhuǎn)語(yǔ)音設(shè)置
com.android.settings.UsageStats 使用情況統(tǒng)計(jì)
com.android.settings.UserDictionarySettings 用戶詞典
com.android.settings.VoiceInputOutputSettings 語(yǔ)音輸入與輸出設(shè)置
com.android.settings.WirelessSettings 無線和網(wǎng)絡(luò)設(shè)置