⑴ android 中linux 命令pm常見用法(安裝卸載app)
27種用法格式 :
用法說明 :
1、 pm list packages : prints all packages, optionally only those whose package name contains the text in FILTER. Options:
例子:列出系統中所有packages
2、 pm list permission-groups : prints all known permission groups.
例子:
3、 pm list permissions : prints all known permissions, optionally only those in GROUP. Options:
例子:列出系統所有許可
4、 pm list instrumentation : use to list all test packages; optionally supply to list the test packages for a particular application. Options:
-f: list the .apk file for the test package.
5、 pm list features : prints all features of the system.
例子:列出所有手機特性
6、 pm list users : prints all users on the system.
例子:
7、 pm path : print the path to the .apk of the given PACKAGE.
例子:按包名查找apk文件所在路徑
8、 pm mp : print system state associated with the given PACKAGE.
9、 pm install : installs a package to the system. Options:
例子:
10、 pm uninstall : removes a package from the system. Options:
-k: keep the data and cache directories around after package removal. 保留數據
例子:
11、 pm clear : deletes all data associated with a package..
例子:只刪除數據
12、 pm enable, disable, disable-user, disable-until-used : these commands change the enabled state of a given package or component (written as "package/class").
13、 pm grant, revoke : these commands either grant or revoke permissions to applications. Only optional permissions the application has declared can be granted or revoked.
14、 pm get-install-location : returns the current install location.
15、 pm set-install-location : changes the default install location.
NOTE: this is only intended for debugging; using this can cause applications to break and other undersireable behavior.
16、 pm trim-caches : trim cache files to reach the given free space.
17、 pm create-user : create a new user with the given USER_NAME, printing the new user identifier of the user. 創建新用戶
18、 pm remove-user : remove the user with the given USER_IDENTIFIER, deleting all data associated with that user 。 按用戶ID刪除用戶
⑵ 超實用的adb與adb shell常用命令匯總
adb(Android Debug Bridge),SDK自帶的工具,可實現橋接功能,實現PC和android設備的交互
adb shell:基於Android linux系統操作,放在安卓設備的system/bin目錄下,手機端的命令
一:adb常用命令
1. PC連接android設備
(PC與android設備連接同一個wifi,或處於同一個區域網)
連接:adb connect ip:5555
斷開連接:adb disconnect ip
查看連接設備的信息:adb devices
獲取設備的狀態:adb get-state
2. 重啟adb server
打開adb服務:adb start-service
關閉adb服務:adb kill-service
3. 安裝卸載軟體
安裝:adb install apkpath(某個apk)
adb install -r :強制安裝
卸載: adb uninstall package(可用adb shell pm list packages查看包名)
4. 列印日誌
列印android系統日誌:adb logcat
將日誌列印並保存指定文件夾:adb logcat > /Users/apple/Desktop/log.txt
終止進程:control+C
列印mpsys,mpstate,logcat的輸出,用於分析錯誤:adb bugreport
5. PC與android設備上文件復制
android設備上文件復制到PC上:adb pull
PC上文件推至android設備:adb push
6.重新掛載system分區為可寫,需要root許可權./system分區默認掛載為只讀,但有些操作比如給android系統添加命令,刪除自帶應用等需對系統進行寫操作,得重新掛載為可寫
adb shell
su
或:adb root
adb remount 重新掛載文件系統,獲得可寫的許可權(默認情況是只有可讀許可權的),使用adb remount 的前提是要有root許可權
7. 刪除系統應用
adb root
adb remount
adb shell
cd system/app
rm *apk
二:adb shell命令
adb shell 進入系統子目錄,exit 退出
1. pm命令
列出系統應用的所有包名:adb shell pm list packages 可用grep來過濾:adb shell pm list packages | grep 關鍵字
清除應用數據與緩存:adb shell pm clear <packagename>
2. am命令
啟動應用:adb shell am start -n com.xxx.xxxxxxx|xxx.Activity(可通過adb shell mpsys activity activities | grep mFocusedActivity查看
強制停止應用:adb shell am force-stop <packagename>
3. input命令
模擬點擊事件,點擊坐標點(x,y):adb shell input tap x y
模擬滑動事件,從(x1,y1)到(x2,y2):adb shell input swipe x1 y1 x2 y2
發送文本內容:adb shell input text
模擬按下home:adb shell input keyevent KRYCODE_HOME
4. screencap命令
截屏:adb shell screencap
5. 查看網路狀態命令
查看當前網路狀態:adb shell netstat
通過配置文件配置和管理網路連接:adb shell netcfg
查看網路信息:ifconfig
測試網路聯網狀態:ping
5.其它相關命令
查看當前終端中進程:adb shell ps
獲取cpu信息:adb shell cat /proc/cpuinfo
查看內存信息:adb shell cat /proc/meminfo
查看屏幕解析度:adb shell wm size
查看設備ip地址:adb shell ifconfig | grep Mask
查看實時資源佔用情況:adb shell top
⑶ 常用的安卓手機adb命令總結
很早就想整理一下自己平時常用的一些adb命令,不僅為了便於以後查找,而且整理的過程自己又重新復習了一遍,但是當我開始在度娘一搜的時候,發現很多人已經寫的非常詳細了,尤其是當我發現了這篇adb概括
心中一句NND,怎麼可以寫的這么詳細,瞬間沒了想寫這篇文章的慾望,如果你點了鏈接發現確實很全,那麼恭喜你可以關掉這篇了,哈哈哈。
我就不這么想的,雖然很全,但不是我常用的,因人而異,所以我就權當記筆記+替這哥們宣傳了。
– adb devices , 獲取設備列表及設備狀態
設備的狀態有 3 種
device , 設備連接正常
offline , 設備離線,連接出現異常
unauthorized 設備為進行授權,需要在設備上是否允許調試對話框進行授權
offline情況解決辦法,先執行adb kill-server 命令,再執行adb start-server 命令,再嘗試adb devices 查看列表,如果還是offline,來來來,使用必殺技,重啟大法。
當電腦連接多個android設備並可用時,所有的adb命令都需要指定設備後執行(當然你也可以移除多餘的設備)
adb -s <設備名稱> install/uninstall/shell/pull/push等命令
– adb install app在pc硬碟路徑,選中app直接拖入即可
常見的錯誤情況
INSTALL_FAILED_TEST_ONLY, 安裝的app的debug版本的,未簽名,adb install -t 路徑即可安裝
INSTALL_FAILED_DUPLICATE_PACKAGE, 已經安裝相同包名的app, 先卸載再安裝
– adb uninstall app的包名,卸載app
adb pull 將 Android 設備上的文件或者文件夾復制到本地
adb pull sdcard/Android/111.txt E:\
小技巧,可以將本地路徑指定為桌面,方便查看, 在桌面按住shift鍵,滑鼠右鍵選擇在此處打開命令行窗口,直接輸入adb pull sdcard/Android/111.txt 執行,就可將111.txt復制到桌面。
前提是設備已經獲取root許可權
adb root
adb remount
adb push 將pc上文件復制到android設備中,修改room原生應用時比較頻繁使用,如settings.apk, launcher3.apk
– adb shell pm 命令
adb shell pm list package 列出android設備上的所有app
adb shell pm list package -s 列出android設備上的系統級別app
adb shell pm list package -3 列出android設備上的第三方app(用戶安裝的)
adb shell pm list package -f 列出app包名及對應的apk名及存放位置
adb shell pm list package -i 列出app包名及其安裝來源(應用市場名稱)
adb shell pm mp app包名 列出app的相關信息,類似獲取Manifest文件內容
-查看前台 Activity
adb shell mpsys activity activities 「| grep mFocusedActivity」
-adb shell am 命令
最常用的就是啟動指定的activity和發送指定的廣播
啟動指定的activity
操作指令 adb shell am start -n 包名/類名
註:如果啟動activity時,出現如下錯誤
java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 > > cmp=com.mediatek.engineermode/.io.Gpio } from null (pid=3083, uid=2000) not exported from uid 1001
解決辦法,1、如果是你自己可控的app,那麼找到你要調用的activity在manifest.xml中,增加
1
配置即可, android:name="" 可以為空字元串。
2、如果是不可控的app,例如我調用的系統原生app,那麼你就洗洗睡吧,別折騰了,除非你修改源碼和上邊一樣操作,重新push替換原來的app。
啟動默認瀏覽器打開一個網頁
adb shell am start -a android.intent.action.VIEW -d * ********
先停止目標應用,再啟動
adb shell am start -s com.android.camera/.Camera
啟動相機
adb shell am start -n com.android.camera/.Camera
啟動設置
adb shell am start -n com.android.settings/com.android.settings.Settings
啟動Wifi設置
adb shell am start -n com.android.settings/com.android.settings.wifi.WifiSettings
啟動藍牙設置
adb shell am start -n com.android.settings/com.android.settings.bluetooth.BluetoothSettings
其它的類似只要你能在manifest中找到配置的,都可以通過這種方法來調用
發送指定的廣播
操作指令 adb shell am broadcast -a 廣播名 --ei/es/ez 參數名 參數值 --ei/es/ez 參數名 參數值
–ei integer 值
–es String 值
–ez boolean 值
–ef float 值
–el long 值
例如之前寫的
Android6.0 源碼修改之Setting列表配置項動態添加和靜態添加, 當中就通過發送廣播來接收增加配置列表項
adb shell am broadcast -a cn.dynamic.add.settingcategoryitem --es location 「0-2」 --es title 「紅」 --es intent 「com.android.settings.SCHEDULE_POWER_ON_OFF_SETTING」
-adb shell input keycode 指令
HOME 鍵 adb shell input keycode 3
返回鍵 adb shell input keycode 4
打開瀏覽器 adb shell input keycode 64
-adb shell wm 指令
屏幕解析度 adb shell wm size
屏幕密度 adb shell wm density
adb shell wm density 320/480/640 可修改屏幕密度查看效果,對應Launcher圖標會縮放
adb shell ifconfig 命令
IP 地址 adb shell ifconfig 「| grep Mask」
WIFI 地址 adb shell ifconfig wlan0
狀態欄和導航欄的顯示隱藏
命令:
adb shell settings put global policy_control
可由如下幾種鍵及其對應的值組成,格式為 key1=value1:key2=value2。
key 含義
immersive.full 同時隱藏
immersive.status 隱藏狀態欄
immersive.navigation 隱藏導航欄
immersive.preconfirms 同時顯示
這些鍵對應的值可則如下值用逗號組合:
value 含義
apps 所有應用
所有界面
packagename 指定應用
packagename 排除指定應用
例如:
adb shell settings put global policy_control immersive.full=*
表示設置在所有界面下都同時隱藏狀態欄和導航欄。(重啟也不會失效,恢復需調用下面的命令)
adb shell settings put global policy_control immersive.preconfirms=*
表示恢復顯示
adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3
表示設置在包名為 com.package1 和 com.package2 的應用里隱藏狀態欄,在除了包名為 com.package3 的所有應用里隱藏導航欄
adb shell am force-stop app 關閉APP
adb shell pm clear APP app進程被殺死,且會清楚所有數據
1:查找手機安裝應用的包名:adb shell pm list packages -f
2:查看系統盤符:adb shell df
3:查看Log 1:adb shell 2: logcat | grep "abc"
4:刪除應用:1:adbremount 2:adb shell 3:cdsystem/app 4:rm *.apk
5:安裝APK: adbinstall -r *.apk 或者 adb push*.apk /system/app
6:查看APP啟動的時間指令
adb shell am start -W -ncom.android.dialer/.DialtactsActivity (W是大寫)執行命令後APP會自 動啟動,其中ThisTime即是本次 App啟動所花費的時間。
7:查看包名中當前所在進程信息:adb shell ps | grep +包名
8:查看Activity運行的任務棧:adb shell mpsys activity
9:查看鍵值:adb logcat | grep intercep -i
10:查看模塊所佔有的CPU資源:adb shell top -d 2 -m 10
11:查看可用系統的權
$ adb shell
# pm list permissions
12:模擬按鍵的輸入:adb shell input keyevent + 鍵值
eg: adb shell input keyevent 82 表示menu
adb shell input keyevent 3 表示home
adb shell input keyevent 19 表示up
adb shell input keyevent 20 表示down
adb shell input keyevent 21 表示left
adb shell input keyevent 22 表示right
adb shell input keyevent 66 表示enter
adb shell input keyevent 4 表示back
13:模擬滑動輸入:adb shell input touchscreen <x1> <y1> <x2> <y2>
eg: adb shell input touchscreen swipe 18 665 18 350
14:啟動一個Activity : adb shell am start -n 包名+類名
15:錄制屏幕:adb shell screenrecord /sdcard/demo.mp4
16:重新啟動:adb reboot
17:Monkey的基本用法下面是一個更為典型的命令行示例,它啟動指定的應用程序,並向其發送500個偽隨機事件:
$ adb shell monkey -p your.package.name -v 500
如果跑桌面或者systemUi的monkey的話:
adb shell monkey -v -v -p 桌麵包名 --pct-touch 50 --pct-motion 30 --pct-syskeys 20 --throttle 300 -s 200 200000
18:查找第三方應用的詳細信息:
adb shell mpsys package +第三方包名(com.txznet.webchat)
⑷ Google Play的靜默安裝是怎麼實現的
其實靜默安裝的原理很簡單,就是調用Android系統的pm install命令就可以了,但關鍵的問題就在於,pm命令系統是不授予我們許可權調用的,因此只能在擁有ROOT許可權的手機上去申請許可權才行。
⑸ android adb命令修改系統時間
修改前提:獲取系統root許可權,然後adb shell進入shell界面。
在adb shell中試圖使用 date -s "yyyymmdd.[[[hh]mm]ss]"修改系統系統時間時,會提示date: Unknown option s。
adb的全稱為Android Debug Bridge.是android用戶經常用到的工具,adb shell下的am與pm,am和pm命令必須先切換到adb shell模式下才能使用。
am全稱activity manager,你能使用am去模擬各種系統的行為,例如去啟動一個activity,強制停止進程,發送廣播進程,修改設備屏幕屬性等等。
(5)安卓pm命令原理擴展閱讀:
注意事項:
1、查看adb版本:adb version
2、查看ADB幫助:adb help
3、查看log:adb logcat
4、終止adb服務進程:adb kill-server
5、重啟adb服務進程:adb start-server
6、顯示系統中全部android平台:android list targets、
7、使用 Monkey 進行壓力測試:Monkey 可以生成偽隨機用戶事件來模擬單擊、觸摸、手勢等操作,可以對正在開發中的程序進行隨機壓力測試。:adb shell monkey -p <packagename> -v 500。
⑹ Android中AM、PM、mpsys命令使用總結
am指令是 activity manager的縮寫,可以啟動Service、Broadcast,殺進程,監控等功能,這些功能都非常便捷調試程序。
可以通過adb shell 進入Android 的Linux命令界面,輸入am -help查看詳細命令,先介紹幾個簡單用法,
命令格式如下
命令列表:
原理分析:am命令實的實現方式在Am.java,最終幾乎都是調用ActivityManagerService相應的方法來完成的,am monitor除外。比如前面概述中介紹的命令am start -a android.intent.action.VIEW -d https://amberweather.com , 啟動Acitivty最終調用的是ActivityManagerService類的startActivityAsUser()方法來完成的。再比如am kill-all命令,最終的實現工作是由ActivityManagerService的killBackgroundProcesses()方法完成的。
下面說一下[options]和 <INTENT>參數的意義以及如何正確取值。
主要是啟動Activity命令am start [options] <INTENT>使用options參數,接下來列舉Activity命令的[options]參數:
啟動Activity的實現原理: 存在-W參數則調用startActivityAndWait()方法來運行,否則startActivityAsUser()。
命令
例如: 向pid=12345的進程,發出level=RUNNING_LOW的收緊內存命令
level取值范圍為: HIDDEN、RUNNING_MODERATE、BACKGROUND、RUNNING_LOW、MODERATE、RUNNING_CRITICAL、COMPLETE
am的子命令,startservice, stopservice, broadcast, kill, profile start, profile stop, mpheap的可選參數都允許設置--user <USER_ID>。目前市面上的絕大多數手機還是單用戶模式,因此可以忽略該參數,默認為當前用戶。
例如:啟動id=10001的用戶的指定service。
Intent的參數和flags較多,為了方便,這里分為3種類型參數,常用參數,Extra參數,Flags參數
實例
(1). 基本類型
參數es是Extra String首字母簡稱,實例:
(2). 數組類型
參數eia,是Extra int array首字母簡稱,多個value值之間以逗號隔開,實例:
(3). ArrayList類型
參數efal,是Extra float Array List首字母簡稱,多個value值之間以逗號隔開,實例:
pm工具為包管理(package manager)的簡稱,可以使用pm工具來執行應用的安裝和查詢應用寶的信息、系統許可權、控制應用,pm工具是Android開發與測試過程中必不可少的工具,shell命令格式如下:
原理分析:pm命令實的實現方式在Pm.java,最後大多數都是調用PackageManagerService相應的方法來完成的。disbale之後,在桌面和應用程序列表裡邊都看到不該app。
查看所有的package,
[options]參數:
disabled + enabled = 總應用個數; 系統 + 第三方 = 總應用個數。
查看第3方應用:
查看已經被禁用的包名
<FILTER>參數
當FILTER為不為空時,則只會輸出包名帶有FILTER欄位的應用;當FILTER為空時,則默認顯示所有滿足條件的應用。
例如,查看包名帶有weather欄位的包名
[options]參數:
<PATH>參數: 指的是需要安裝的apk所在的路徑
mpsys是Android自帶的強大debug工具,從名字就可以看出,主要是用於mp 當前android system的一些信息,是一項分析手機問題,運行狀態,使用情況等十分有效的手段。
實現原理
mpsys的源碼結構其實很簡單,只有一個mpsys.cpp
/frameworks/native/cmds/mpsys/mpsys.cpp
先通過defaultServiceManager()函數獲得ServiceManager對象,然後根據mpsys傳進來的參數通過函數checkService來找到具體的service, 並執行該service的mp方法,達到mp service的目的。
不同的Android系統版本支持的命令有所不同,可通過下面命令查看當前手機所支持的mp服務,先進入adb shell,再執行如下命令:mpsys -l。 這些服務名可能並看不出其調用的哪個服務,可以通過下面指令:service list。
服務列表有很多,這里簡單介紹幾種
通過下面命令可列印具體某一項服務:mpsys <service>,其中service便是前面表格中的服務名
接下來主要說下mpsys activity 用法
命令
options可選值
mpsys activity等價於依次輸出下面7條指令:
cmd可選值
命令
返回結果
上面的輸出結果可以分為以下四個部分
也可以只輸出某個pid或package的進程信息:
下面以AmberLocker作為實例進行分析
場景1:查詢某個App所有的Service狀態
解讀:Service類名為com.amber.lockscreen.LockerHeartService,包名為mobi.infolife.ezweather.locker.locker_2,baseDir(apk路徑)為/data/app/mobi.infolife.ezweather.locker.locker_2-2/base.apk,dataDir((apk數據路徑)
運行在進程pid=1115,進程名為進程名為mobi.infolife.ezweather.locker.locker_2,,uid=10060,還有創建時間等信息
場景2:查詢某個App所有的廣播狀態
場景3:查詢某個App所有的Activity狀態
場景4:查詢某個App的進程狀態
格式:ProcessRecord{Hashcode pid:進程名/uid},進程pid=941,進程名為mobi.infolife.ezweather.locker.locker_2:live,uid=10060.
該進程中還有Services,Connections, Providers, Receivers,
場景5:查詢棧頂Activity
mpsys 的命令還有很多,這里就不一一列舉了。
⑺ Android 代碼,關於pm指令安裝apk。
你看你的加號被寫到字元串里了
⑻ android 利用 pm命令 靜默安裝 不成功,怎麼整
跟手機有關,android是開源的,很多手機廠商都自己做了修改,包括許可權,SD卡路徑等。
另外看看你報錯的log,貼出來
⑼ android 基本文件操作命令
ADB (Android Debug Bridge)
說明:下面一些命令需要有root許可權才能執行成功
快速啟動dos窗口執行adb:
1. adb.exe所在路徑添加到系統環境變數中
2. 配置快捷鍵啟動dos
進入C:\WINDOWS\system32目錄下,找到cmd.exe.
右擊菜單 "發送到" -> 桌面快捷方式。
在桌面上右擊"快捷方式 到 cmd.exe" -> "屬性" -> "快捷方式"頁
-> 游標高亮"快捷鍵" -> 按下自定義快捷鍵 (如:Ctrl + Alt + Z)
任何情況下,按下Ctrl + Alt + Z啟動dos窗口就可以執行adb命令了
-----------查看設備連接狀態 系列-----------
adb get-serialno 獲取設備的ID和序列號serialNumber
adb devices 查詢當前計算機上連接那些設備(包括模擬器和手機),輸出格式: [serialNumber] [state]
adb get-state 查看模擬器/設施的當前狀態.
說明:
序列號[serialNumber]——由adb創建的一個字元串,這個字元串通過自己的控制埠<type>-<consolePort>
唯一地識別一個模擬器/設備實例。一個序列號的例子: emulator-5554
-----------發送命令到設備 系列-----------
adb [-d|-e|-s <serialNumber>] <command>
-d 發送命令給usb連接的設備
-e 發送命令到模擬器設備
-s <serialNumber> 發送命令到指定設備
如啟動手機設備shell: adb -d shell
adb forward <local> <remote>發布埠,可以設置任意的埠號,
做為主機向模擬器或設備的請求埠。如:adb forward tcp:5555 tcp:8000
adb reboot 重啟手機
adb remount 將system分區重新掛載為可讀寫分區
adb kill-server 終止adb服務進程
adb start-server 重啟adb服務進程
adb root 已root許可權重啟adb服務
adb wait-for-device 在模擬器/設備連接之前把命令轉載在adb的命令器中
adb jdwp 查看指定的設施的可用的JDWP信息.
可以用 forward jdwp:<pid> 埠映射信息來連接指定的JDWP進程.例如:
adb forward tcp:8000 jdwp:472
jdb -attach localhost:8000
adb shell am 命令可以啟動應用程序
adb shell input text <string> 向設備輸入文本(游標所在的文本框)
adb shell input keyevent <event_code> 向設備發送按鍵事件
如:
在編輯簡訊時,往文本框輸入文本:adb shell input text "hello"
向手機發送鍵值回Home:adb shell input keyevent 3
event_code 參考view/KeyEvent.java中的 KEYCODE_*
public static final int KEYCODE_SOFT_LEFT = 1;
public static final int KEYCODE_SOFT_RIGHT = 2;
public static final int KEYCODE_HOME = 3;
public static final int KEYCODE_BACK = 4;
public static final int KEYCODE_CALL = 5;
public static final int KEYCODE_ENDCALL = 6;
-----------安裝卸載 系列-----------
adb install [-l] [-r] <file> - push this package file to the device and install it
('-l' means forward-lock the app)
('-r' means reinstall the app, keeping its data)
adb uninstall [-k] <package> - remove this app package from the device
('-k' means keep the data and cache directories)
如:
adb install d:\hello.apk
adb unstall com.huawei.hello
說明:如果帶-r選項重新安裝apk時,安裝在 /data/local/tmp/目錄下,手機重啟後還是使用原來的apk.
-----------文件操作 系列-----------
adb push <local> <remote> - file/dir to device
adb pull <remote> <local> - file/dir from device
-----------基本linux shell命令 系列-----------
adb shell [command]
ls 列出目錄下的文件和文件夾
cd 切換目錄
rm 刪除目錄和文件
cat 查看文件內容
ps 可以看那個進程再跑
ps -x [PID] 查看單個進程的狀態
top 可以看那個進程的佔用率最高
su 切換到root用戶
kill [pid] 殺死一個進程
chmod 777 <file> 修改該文件為可執行許可權
詳細使用情況可以登錄一台Linux伺服器在shell下查看幫助手冊, man <command>
-----------查看系統狀態和信息 系列-----------
adb shell procrank 查詢各進程內存使用情況
adb shell service list 查看services信息
adb shell cat /proc/meminfo 查看當前的內存情況
adb shell cat /proc/cpuinfo 查看CPU信息(硬體)
adb shell cat /proc/iomem 查看IO內存分區
adb shell getprop 列出系統所有屬性
adb shell getprop | findstr "gsm" 列出包含gsm的屬性
adb shell setprop <key> <value> 修改系統屬性
adb shell sqlite3 可以執行sql語句查看資料庫信息, 具體使用情況待調查
-----------Log 系列-----------
adb logcat [ <filter-spec> ] - View device log
1~~~~~~~~~~~查看可用日誌緩沖區:
adb logcat -b radio — 查看緩沖區的相關的信息.
adb logcat -b events — 查看和事件相關的的緩沖區.
adb logcat -b main — 查看主要的日誌緩沖區
2~~~~~~~~~~~過濾日誌輸出:
過濾器語句按照下面的格式描tag:priority ... , tag 表示是標簽, priority 是表示標簽的報告的最低等級
adb logcat *:W 顯示優先順序為warning或更高的日誌信息
adb logcat ActivityManager:I MyApp:D *:S
日誌的標簽是系統部件原始信息的一個簡要的標志。(比如:「View」就是查看系統的標簽).
優先順序有下列集中,是按照從低到高順利排列的:
V — Verbose (lowest priority)
D — Debug
I — Info
W — Warning
E — Error
F — Fatal
S — Silent (highest priority, on which nothing is ever printed)
如果你電腦上運行logcat ,相比在遠程adbshell端,你還可以為環境變數ANDROID_LOG_TAGS :輸入一個參數來設置默認的過濾
export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"
需要注意的是ANDROID_LOG_TAGS 過濾器如果通過遠程shell運行logcat 或用adb shell logcat 來運行模擬器/設備不能輸出日誌.
3~~~~~~~~~~~控制日誌輸出格式:
日誌信息包括了許多元數據域包括標簽和優先順序。可以修改日誌的輸出格式,所以可以顯示出特定的元數據域。可以通過 -v 選項得到格式化輸出日誌的相關信息.
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.
當啟動了logcat ,你可以通過-v 選項來指定輸出格式:
[adb] logcat [-v <format>]
下面是用 thread 來產生的日誌格式:
adb logcat -v thread
需要注意的是你只能-v 選項來規定輸出格式 option.
4~~~~~~~~~~~Logcat命令列表
-b <buffer> 載入一個可使用的日誌緩沖區供查看,比如event 和radio . 默認值是main 。具體查看Viewing Alternative Log Buffers.
-c 清楚屏幕上的日誌.
-d 輸出日誌到屏幕上.
-f <filename> 指定輸出日誌信息的<filename> ,默認是stdout .
-g 輸出指定的日誌緩沖區,輸出後退出.
-n <count> 設置日誌的最大數目<count> .,默認值是4,需要和 -r 選項一起使用。
-r <kbytes> 每<kbytes> 時輸出日誌,默認值為16,需要和-f 選項一起使用.
-s 設置默認的過濾級別為silent.
-v <format> 設置日誌輸入格式,默認的是brief 格式,要知道更多的支持的格式,參看Controlling Log Output Format
adb bugreport - return all information from the device
that should be included in a bug report.
adb shell dmesg 查詢內核緩沖區信息
adb shell mpstate 各類信息,比如進程信息,內存信息,進程是否異常,kernnel的log等
adb shell mpcrash
adb shell mpsys 查詢所有service的狀態
-----------其他 -----------
模擬器使用鏡像sdcard
用SDK里的mksdcard工具來創建FAT32磁碟鏡像並在模擬器啟動時載入它。這樣創建鏡像:? mksdcard <size> <file>,
比如我要創建一個64M的SD卡模擬文件,文件路徑是在D:\workspace\sdcard.img
mksdcard 64000000 D:\workspace\sdcard.img
Emulator –sdcard D:\workspace\sdcard.img
或者在eclipse的run菜單的open run dialog對話框中配置啟動參數。
#top
Usage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [ -t ] [ -h ]
-m num Maximum number of processes to display.
-n num Updates to show before exiting.
-d num Seconds to wait between updates.
-s col Column to sort by (cpu,vss,rss,thr).
-t Show threads instead of processes.
-h Display this help screen.
********* simple selection ********* ********* selection by list *********
-A all processes -C by command name
-N negate selection -G by real group ID (supports names)
-a all w/ tty except session leaders -U by real user ID (supports names)
-d all except session leaders -g by session OR by effective group name
-e all processes -p by process ID
T all processes on this terminal -s processes in the sessions given
a all w/ tty, including other users -t by tty
g OBSOLETE -- DO NOT USE -u by effective user ID (supports names)
r only running processes U processes for specified users
x processes w/o controlling ttys t by tty
*********** output format ********** *********** long options ***********
-o,o user-defined -f full --Group --User --pid --cols --ppid
-j,j job control s signal --group --user --sid --rows --info
-O,O preloaded -o v virtual memory --cumulative --format --deselect
-l,l long u user-oriented --sort --tty --forest --version
-F extra full X registers --heading --no-heading --context
********* misc options *********
-V,V show version L list format codes f ASCII art forest
-m,m,-L,-T,H threads S children in sum -y change -l format
-M,Z security data c true command name -c scheling class
-w,w wide output n numeric WCHAN,UID -H process hierarchy
netstat -ano 查看網路連狀態
顯示協議統計信息和當前 TCP/IP 網路連接。
NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [interval]
-a 顯示所有連接和監聽埠。
-b 顯示包含於創建每個連接或監聽埠的
可執行組件。在某些情況下已知可執行組件
擁有多個獨立組件,並且在這些情況下
包含於創建連接或監聽埠的組件序列
被顯示。這種情況下,可執行組件名
在底部的 [] 中,頂部是其調用的組件,
等等,直到 TCP/IP 部分。注意此選項
可能需要很長時間,如果沒有足夠許可權
可能失敗。
-e 顯示乙太網統計信息。此選項可以與 -s
選項組合使用。
-n 以數字形式顯示地址和埠號。
-o 顯示與每個連接相關的所屬進程 ID。
-p proto 顯示 proto 指定的協議的連接;proto 可以是
下列協議之一: TCP、UDP、TCPv6 或 UDPv6。
如果與 -s 選項一起使用以顯示按協議統計信息,proto 可以是下列協議之一:
IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
-r 顯示路由表。
-s 顯示按協議統計信息。默認地,顯示 IP、
IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的統計信息;
-p 選項用於指定默認情況的子集。
-v 與 -b 選項一起使用時將顯示包含於
為所有可執行組件創建連接或監聽埠的
組件。
interval 重新顯示選定統計信息,每次顯示之間
暫停時間間隔(以秒計)。按 CTRL+C 停止重新
顯示統計信息。如果省略,netstat 顯示當前
配置信息(只顯示一次)
pm
usage: pm [list|path|install|uninstall]
pm list packages [-f]
pm list permission-groups
pm list permissions [-g] [-f] [-d] [-u] [GROUP]
pm list instrumentation [-f] [TARGET-PACKAGE]
pm list features
pm path PACKAGE
pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] PATH
pm uninstall [-k] PACKAGE
pm enable PACKAGE_OR_COMPONENT
pm disable PACKAGE_OR_COMPONENT
The list packages command prints all packages. Options:
-f: see their associated file.
The list permission-groups command prints all known
permission groups.
The list permissions command prints all known
permissions, optionally only those in GROUP. Options:
-g: organize by group.
-f: print all information.
-s: short summary.
-d: only list dangerous permissions.
-u: list only the permissions users will see.
The list instrumentation command prints all instrumentations,
or only those that target a specified package. Options:
-f: see their associated file.
The list features command prints all features of the system.
The path command prints the path to the .apk of a package.
The install command installs a package to the system. Options:
-l: install the package with FORWARD_LOCK.
-r: reinstall an exisiting app, keeping its data.
-t: allow test .apks to be installed.
-i: specify the installer package name.
The uninstall command removes a package from the system. Options:
-k: keep the data and cache directories around.
after the package removal.
The enable and disable commands change the enabled state of
a given package or component (written as "package/class").
查看stdout 和stderr
在默認狀態下,Android系統有stdout 和 stderr (System.out和System.err )輸出到/dev/null ,
在運行Dalvik VM的進程中,有一個系統可以備份日誌文件。在這種情況下,系統會用stdout 和stderr 和優先順序 I.來記錄日誌信息
通過這種方法指定輸出的路徑,停止運行的模擬器/設備,然後通過用setprop 命令遠程輸入日誌
$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start系統直到你關閉模擬器/設備前設置會一直保留,可以通過添加/data/local.prop 可以使用模擬器/設備上的默認設置
UI/軟體 試驗程序 Monkey
當Monkey程序在模擬器或設備運行的時候,如果用戶出發了比如點擊,觸摸,手勢或一些系統級別的事件的時候,
它就會產生隨機脈沖,所以可以用Monkey用隨機重復的方法去負荷測試你開發的軟體.
最簡單的方法就是用用下面的命令來使用Monkey,這個命令將會啟動你的軟體並且觸發500個事件.
$ adb shell monkey -v -p your.package.name 500
更多的關於命令Monkey的命令的信息,可以查看UI/Application Exerciser Monkey documentation page.
⑽ 為什麼安卓設備用pm install -r命令靜默安裝應用時報錯Failure [INSTALL_FAILED_INVALID_APK]
提示的內容為無效的APK。
那麼就有以下幾種可能:
1,apk文件損壞,不完整。
2,apk文件不支持低版本的系統。