adb devices 查看連接設備
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 (這個除了極特殊用途外,用處不大)
adb shell getprop 獲取系統(tǒng)設置
adb sideload xxx.zip adb 刷機
adb push xxxx /sdcard/ 推送電腦文件到手機,其中的 xxxx 是電腦上的文件路徑,yyyy 是手機上的文件路徑,比如我要推送 “C 盤 adb 目錄下的 adb.exe” 到手機的 “/data/media/0” 目錄下,我就需要命令 adb push C:\adb\adb.exe /data/media/0;
adb pull yyyy xxxx 獲取手機文件到電腦,其中 yyyy 是手機路徑及文件,xxxx 是電腦路徑,比如我要獲取 “手機上的 /system/framework” 文件夾到 “電腦 D 盤下的 framework 文件夾”,我就需要 adb pull /system/framework D:\framework
Android部分手機崩潰了后會自動重啟應用,導致logcat的崩潰日志被刷掉,很是苦惱,拔線都來不及,這個時候可以用
adb logcat >> log.txt命令在要崩潰的時候趕緊執(zhí)行記錄日志到文件,崩潰后及時停止記錄,然后進去搜索FATAL EXCEPTION就可以愉快看報錯了
可以查看很多apk的manifest里面的基本信息,比如支持分辨率,版本號等,
/Users/xxxxx/Library/Android/sdk/build-tools/xxxx/aapt dump badging xxxxxxx.apk
查看app是32位還是64位的,簡單的方法是:首先在安卓系統(tǒng)中會存在zygote和zygote64(父進程),分別對應32位和64位應用,然后在手機中打開測試的app后,然后在dos下,手機連接電腦,連接成功以后,在輸入
adb shell ps | grep zygote,會有zygote和zygote64兩個進程 ,然后再輸入adb shell ps |grep 上面查到的zygote64的PID,然后看下列出的包名有沒有你測試的apk包名,有的話就是64位。另外你還要運行 adb shell ps | grep 上面查到的zygote的PID,看下看下列出的包名有沒有你測試的apk包名,如果有,說明你測試的app兼容64位和32位。原理就是通過父進程zygote和zygote64,看下他們的子進程來看下沒有測試的app包名;(當然還有其他方法修改apk后綴名為zip解壓,查看lib中有沒有包含對應的庫,具體自行百度下~)
設置手機上app進入調(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 (簡單方式:adb shell wm size) 獲取屏幕分辨率
adb shell wm density 獲取屏幕dpi
adb shell am display-size 1280x800 重寫模擬器/設備顯示大小
adb shell am display-density 480 重寫模擬器/設備顯示密度
adb shell am start -n com.xxx.apps.xxx.overseas/ui.StartPageActivity -d paramStr //啟動某個app的某個activity(可能需要配置android:exported="true",獲取參數(shù):getIntent().getDataString())
adb shell dumpsys activity activities 查看全部任務棧
adb shell dumpsys activity activities | grep ResumedActivity 查看當前activity
adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p' 限制僅輸出Running Activities列表
adb shell am start com.android.settings //設置主頁面
adb shell ps | grep com.survival.last //查看線程pid
adb shell top -H -p pid //查看線程優(yōu)先級,pid用上個命令獲取,返回的PR就是線程的優(yōu)先級
adb shell "am force-stop com.survival.last" 強制結(jié)束App
adb logcat -v time | grep ActivityManager 查看activity跳轉(zhuǎn)日志
adb shell input keyboard text "abc" //模擬鍵盤輸入
adb shell input keyevent 3(home鍵) 4(back鍵) 187(最近任務) 19 (up鍵) 24 (volume+鍵) 25 (volume-鍵)
adb shell input tap 500 500 // 模擬點擊屏幕指定位置,不過在android中tap好像失效了不知道為什么
adb shell input swipe 500 800 500 300 // 模擬滑動,從(500,800)滑動到(500,300)
adb shell cat /proc/cpuinfo 能夠看明白手機指令集,是32位還是64位
adb shell getprop ro.product.cpu.abi 查看手機CPU的ABIs
adb shell top(adb shell top -H) 查看CPU/內(nèi)存等占用率的命令
adb shell pidof <包名> # 查看特定App的PID(如pidof com.example.app)或者直接 as 的 logcat 上查看 pid
adb shell ps | grep <包名> # 查看特定App的PID,可顯示進程詳細信息(含PID、內(nèi)存、優(yōu)先級等)
adb shell pgrep -f <包名> # 查看特定App的PID,更精確的進程匹配(支持模糊搜索)
adb shell ps -A pidAndroid系統(tǒng)高版本查看進程信息
adb shell ps -A | grep "com.example" # 按包名過濾查看進程信息
adb shell ps -A | grep "u0_a" # 過濾用戶進程(u0_a開頭)查看進程信息
adb shell ps -A -T | grep pid (adb shell ps -T -p pid) Android系統(tǒng)高版本查看進程的線程信息
adb shell dumpsys meminfo <package_name>重點關(guān)注如下幾個字段:Native/Dalvik 的 Heap 信息,具體在上面的第一行和第二行,它分別給出的是JNI層和Java層的內(nèi)存分配情況,如果發(fā)現(xiàn)這個值一直增長,則代表程序可能出現(xiàn)了內(nèi)存泄漏。Total 的 PSS 信息
這個值就是你的應用真正占據(jù)的內(nèi)存大小,通過這個信息,你可以輕松判別手機中哪些程序占內(nèi)存比較大了。
申請最大內(nèi)存使用
adb shell getprop dalvik.vm.heapgrowthlimit
adb shell getprop dalvik.vm.heapsize
adb shell getprop dalvik.vm.heapstartsize
說明:heapsize參數(shù)表示單個進程可用的最大內(nèi)存,但如果存在heapgrowthlimit參數(shù),則以heapgrowthlimit為準.
heapsize表示不受控情況下的極限堆,表示單個虛擬機或單個進程可用的最大內(nèi)存。而android上的應用是帶有獨立虛擬機的,也就是每開一個應用就會打開一個獨立的虛擬機(這樣設計就會在單個程序崩潰的情況下不會導致整個系統(tǒng)的崩潰)。
注意:在設置了heapgrowthlimit的情況下,單個進程可用最大內(nèi)存為heapgrowthlimit值。在android開發(fā)中,如果要使用大堆,需要在manifest中指定android:largeHeap為true,這樣dvm heap最大可達heapsize
設置logcat緩存大小
adb logcat -G 100M
adb logcat -g
將手機上已安裝的apk拉下來
1 .定位apk所在系統(tǒng)路徑 :adb shell pm path com.google.android.youtube
- 將上一步apk查看到的路徑從手機把apk pull下來:
adb pull /system/app/YouTube/YouTube.apk
adb wifi 調(diào)試方法(手機和電腦連接的是同一個 wifi)
手機USB 連接電腦:adb tcpip 5555
查看手機 ip 地址:adb shell ifconfig wlan0
adb wifi 連接手機:adb connect 192.168.0.142:5555
斷開adb:adb disconnect 192.168.0.142
缺點:手機斷電重啟后,就要再用USB線,開啟手機ADB
如果執(zhí)行命令時遇到:more than one device/emulator 的錯誤
那么就需要通過:adb devices列出所有設備列表
然后通過:給命令加上-s的參數(shù):adb -s 192.168.137.95:5555 logcat就可以了
AndroidStduio項目構(gòu)建相關(guān)命令
./gradlew processDebugManifest --stacktrace可以專門處理manifest合并沖突的問題
./gradlew assembleDebug --stacktrace --info
./gradlew assembleRelease --stacktrace --info
./gradlew assembleDebug --profile//生成一份本地的耗時分析報告
./gradlew assembleDebug --scan
./gradlew clean
上面是對主項目執(zhí)行默認的構(gòu)建,需要指定module構(gòu)建,命令格式類似:./gradlew :moduleName:assembleRelease --stacktrace --info
./gradlew :app:dependencies --info查看包的依賴關(guān)系(相同的庫存在多個版本時, gradle 會自動使用最高版本的庫 , 上圖中 后面帶有 (*) 的庫就表示 這個庫 有被覆蓋過)
./gradlew :app:dependencies > log.txt查看依賴庫會生成大量內(nèi)容,并且無法看到全部信息,為了方便查看,將輸出信息寫入文本文件中
證書簽名相關(guān)命令
生成證書:keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore giMobile.jks
查詢證書:keytool -list -v -keystore <keystore-file>
上面的查詢現(xiàn)在好像獲取不到 MD5 值,現(xiàn)在得使用命令行 keystore 證書通過命令行拆分成 pem 證書,并獲得 MD5,具體如下:
keytool -importkeystore -srckeystore giMobile.jks -destkeystore test.p12 -deststoretype PKCS12
openssl pkcs12 -in test.p12 -nokeys -out certificate.pem
openssl x509 -noout -fingerprint -md5 -inform pem -in certificate.pem
最后輸出:MD5 Fingerprint=xx:xx...
注:微信的應用簽名是將md5的冒號都刪掉, 再轉(zhuǎn)成小寫
adb命令打開系統(tǒng)設置界面打開系統(tǒng)設置主界面
adb shell am start com.android.settings/com.android.settings.Settings
安全adb shell am start com.android.settings/com.android.settings.SecuritySettings
手機無線信息adb shell am start com.android.settings/com.android.settings.RadioInfo
其他界面完整類名(命令同上)
com.android.settings.AccessibilitySettings 輔助功能設置
com.android.settings.ActivityPicker 選擇活動
com.android.settings.ApnSettings APN設置
com.android.settings.ApplicationSettings 應用程序設置
com.android.settings.BandMode 設置GSM/UMTS波段
com.android.settings.BatteryInfo 電池信息
com.android.settings.DateTimeSettings 日期和壩上旅游網(wǎng)時間設置
com.android.settings.DateTimeSettingsSetupWizard 日期和時間設置
com.android.settings.DevelopmentSettings 開發(fā)者設置
com.android.settings.DeviceAdminSettings 設備管理器
com.android.settings.DeviceInfoSettings 關(guān)于手機
com.android.settings.Display 顯示——設置顯示字體大小及預覽
com.android.settings.DisplaySettings 顯示設置
com.android.settings.DockSettings 底座設置
com.android.settings.IccLockSettings SIM卡鎖定設置
com.android.settings.InstalledAppDetails 語言和鍵盤設置
com.android.settings.LanguageSettings 語言和鍵盤設置
com.android.settings.LocalePicker 選擇手機語言
com.android.settings.LocalePickerInSetupWizard 選擇手機語言
com.android.settings.ManageApplications 已下載(安裝)軟件列表
com.android.settings.MasterClear 恢復出廠設置
com.android.settings.MediaFormat 格式化手機閃存
com.android.settings.PhysicalKeyboardSettings 設置鍵盤
com.android.settings.PrivacySettings 隱私設置
com.android.settings.ProxySelector 代理設置
com.android.settings.RadioInfo 手機信息
com.android.settings.RunningServices 正在運行的程序(服務)
com.android.settings.SecuritySettings 位置和安全設置
com.android.settings.Settings 系統(tǒng)設置
com.android.settings.SettingsSafetyLegalActivity 安全信息
com.android.settings.SoundSettings 聲音設置
com.android.settings.TestingSettings 測試——顯示手機信息、電池信息、使用情況統(tǒng)計、Wifi information、服務信息
com.android.settings.TetherSettings 綁定與便攜式熱點
com.android.settings.TextToSpeechSettings 文字轉(zhuǎn)語音設置
com.android.settings.UsageStats 使用情況統(tǒng)計
com.android.settings.UserDictionarySettings 用戶詞典
com.android.settings.VoiceInputOutputSettings 語音輸入與輸出設置
com.android.settings.WirelessSettings 無線和網(wǎng)絡設置