Android adb命令使用总结
来源:互联网 发布:程序员鄙视链图 编辑:程序博客网 时间:2024/05/18 22:43
一,写在前面
1,自己现在属于一个小菜鸟,每次遇到问题,或者出现bug,我都是打开android studio然后运行一下代码,再然后开始找到那个activity或者fragment的最后加断点或者打log去调试,这样的话定位问题慢,耗时长。
2,看着那些大牛,直接打了终端,啪啪几个命令就立刻,定位出问题,速度快,定位问题准。
3,一点点积累,每学习一个命令,记录下来。
二,基础命令学习
1,adb devices:获取设备列表及设备状态
2,adb get-state:获取设备的状态
说明:
- device:设置正常连接
- offline:设备出现异常,设备无响应
- unknown:没有设备
3,adb kill-server , adb start-server : 结束 adb 服务, 启动 adb 服务,通常两个命令一起用。
4,adb install:安装应用,覆盖安装是使用 -r 选项。
adb uninstall:卸载应用,后面跟的参数是应用的包名
,请区别于 apk 文件名。
adb -s <serialNumber> install <path-to-apk>:指定android设备安装apk文件。(既有模拟器,又有手机,较为常用)。
adb -s <serialNumber> uninstall <pkg_name>:同上,意为卸载软件。
补充:
1)adb 安装软件,如果既有模拟器又有真机。
2)控制安装 APK 的行为。adb install -r/-s/-d
5,adb pull :将 Android 设备上的文件或者文件夹复制到本地。
adb push:将本地文件推送到android设备中。
6,adb reboot :重启 Android 设备。原来有这个命令啊,我之前每一次都是把模拟器关了,再打开的,这以后就方便了,可以直接用命令。
三,高级命令学习
1,adb shell命令
adb 命令是 adb 这个程序自带的一些命令,而 adb shell 则是调用的 Android 系统中的命令,这些 Android 特有的命令都放在了 Android 设备的 system/bin 目录下,例如我再命令行中敲这样一个命令:
从上面的显示发现,很明显,在 bin 目录下并不存在这个命令。那么上面的提示已经告诉你了我们的adb shell命令在哪放着,于是就启动模拟器,将整个 system/bin
目录复制了出来,然后一个一个的去试。
那么上面提到的adb pull命令是不是就用上了啊。操作如下:
打开bin文件如下:
然后,我们在打开am文件,看下里面是什么:
#!/system/bin/sh## Script to start "am" on the device, which has a very rudimentary# shell.#base=/systemexport CLASSPATH=$base/framework/am.jarexec app_process $base/bin com.android.commands.am.Am "$@"再诸如pm文件看一下:
# Script to start "pm" on the device, which has a very rudimentary# shell.#base=/systemexport CLASSPATH=$base/framework/pm.jarexec app_process $base/bin com.android.commands.pm.Pm "$@"
下面就看一下比较常用的adb shell命令吧。
2,pm命令:Package Manager , 可以用获取到一些安装在 Android 设备上得应用信息。pm 的源码 Pm.java , 直接运行 adb shell pm 可以获取到该命令的帮助信息。
1)pm list package:列出安装在设备上的应用。(不带任何选项:列出所有的应用的包名)
xdhywj@xdhywjdeMBP ~ » adb shell root@vbox86p:/ # pm list packagepackage:com.example.firstapplicationpackage:com.awesomeprojectpackage:com.example.alertdialogcancelpackage:com.example.android.livecubespackage:com.example.xdhywj.my_listactivitypackage:com.android.providers.telephonypackage:com.example.xdhywj.observertestpackage:com.android.providers.calendarpackage:com.android.providers.mediapackage:com.example.xdhywj.myapplication_test1package:com.android.wallpapercropper......
2)adb shell pm list package -s:列出系统应用。
xdhywj@xdhywjdeMBP ~ » adb shell pm list packages -spackage:com.example.android.livecubespackage:com.android.providers.telephonypackage:com.android.providers.calendarpackage:com.android.providers.mediapackage:com.android.wallpapercropperpackage:com.android.voicedialerpackage:com.android.documentsuipackage:com.android.galaxy4package:com.android.externalstoragepackage:com.android.htmlviewerpackage:com.android.quicksearchbox......
3)adb shell pm list package -3:列出第三方应用,发现没全都是我们自己的应用程序。
xdhywj@xdhywjdeMBP ~ » adb shell pm list packages -3package:com.example.firstapplicationpackage:com.awesomeprojectpackage:com.example.alertdialogcancelpackage:com.example.xdhywj.my_listactivitypackage:com.example.xdhywj.observertestpackage:com.example.xdhywj.myapplication_test1package:com.sankuai.meituanpackage:com.xdhywj.eventbusdemopackage:com.example.xdhywj.myspawnpackage:com.xdhywj.myspawnpackage:com.example.layoutinflatertestpackage:com.example.xdhywj.servicetestpackage:com.example.xdhywj.myviewpackage:com.example.spannabletext......
4)adb shell pm list package -f:列出应用包名及对应的apk名及存放位置。
xdhywj@xdhywjdeMBP ~ » adb shell pm list packages -f package:/data/app/com.example.firstapplication-2/base.apk=com.example.firstapplicationpackage:/data/app/com.awesomeproject-1/base.apk=com.awesomeprojectpackage:/data/app/com.example.alertdialogcancel-2/base.apk=com.example.alertdialogcancelpackage:/system/app/CubeLiveWallpapers/CubeLiveWallpapers.apk=com.example.android.livecubespackage:/data/app/com.example.xdhywj.my_listactivity-2/base.apk=com.example.xdhywj.my_listactivitypackage:/system/priv-app/TelephonyProvider/TelephonyProvider.apk=com.android.providers.telephonypackage:/data/app/com.example.xdhywj.observertest-1/base.apk=com.example.xdhywj.observertestpackage:/system/priv-app/CalendarProvider/CalendarProvider.apk=com.android.providers.calendar......那么我们是不是可以列出第三方应用对应的apk名以及存放的位置。参数为:-3 -f。
xdhywj@xdhywjdeMBP ~ » adb shell pm list packages -3 -fpackage:/data/app/com.example.firstapplication-2/base.apk=com.example.firstapplicationpackage:/data/app/com.awesomeproject-1/base.apk=com.awesomeprojectpackage:/data/app/com.example.alertdialogcancel-2/base.apk=com.example.alertdialogcancelpackage:/data/app/com.example.xdhywj.my_listactivity-2/base.apk=com.example.xdhywj.my_listactivitypackage:/data/app/com.example.xdhywj.observertest-1/base.apk=com.example.xdhywj.observertestpackage:/data/app/com.example.xdhywj.myapplication_test1-1/base.apk=com.example.xdhywj.myapplication_test1package:/data/app/com.sankuai.meituan-2/base.apk=com.sankuai.meituan......5)adb shell pm list package -i:列出应用包名及其安装来源,结果显示例子(命令最后增加 FILTER:过滤关键字,可以很方便地查找自己想要的应用)
xdhywj@xdhywjdeMBP ~ » adb shell pm list packages -i package:com.example.firstapplication installer=nullpackage:com.awesomeproject installer=nullpackage:com.example.alertdialogcancel installer=nullpackage:com.example.android.livecubes installer=nullpackage:com.example.xdhywj.my_listactivity installer=nullpackage:com.android.providers.telephony installer=nullpackage:com.example.xdhywj.observertest installer=null......
6)adb shell pm list package -f -3 -i meituan:查找三方应用中美团的包名、apk存放位置、安装来源。查到了有两个:一个是美团,一个是秦皇。
xdhywj@xdhywjdeMBP ~ » adb shell pm list package -f -3 meituanpackage:/data/app/com.sankuai.meituan-2/base.apk=com.sankuai.meituanpackage:/data/app/com.meituan.spawn-1/base.apk=com.meituan.spawn
xdhywj@xdhywjdeMBP ~ » adb shell pm path com.sankuai.meituanpackage:/data/app/com.sankuai.meituan-2/base.apk8)pm dump:列出指定应用的 dump 信息,里面有各种信息。例如:
xdhywj@xdhywjdeMBP ~ » adb shell pm dump com.sankuai.meituanDUMP OF SERVICE package: Activity Resolver Table: Schemes: imeituan: 26ac82 com.sankuai.meituan/com.meituan.android.travel.poi.TravelPoiListActivity 57b03b com.sankuai.meituan/.topic.TopicActivity 71af37 com.sankuai.meituan/.survey.SurveyActivity 8112f9 com.sankuai.meituan/.review.KtvReviewActivity a90794 com.sankuai.meituan/com.meituan.android.travel.dealdetail.schedule.ScheduleDetailActivity e77dc4 com.sankuai.meituan/com.meituan.android.hotel.prepay.PrePayOrderCreateActivity......9)pm install/pm uninstall:安装应用/卸载应用,此时apk文件存放于Android设备上,与adb install/uninstall不用。
重点:adb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等)
1)am start -n:am start -n {包(package)名}/{包名}.{活动(activity)名称}。例如启动系统自带的计算器。
xdhywj@xdhywjdeMBP ~ » adb shell am start -n com.android.calculator2/com.android.calculator2.CalculatorStarting: Intent { cmp=com.android.calculator2/.Calculator }#或者可以这样xdhywj@xdhywjdeMBP ~ » adb shell am start -n com.android.calculator2/.CalculatorStarting: Intent { cmp=com.android.calculator2/.Calculator }#启动系统日历xdhywj@xdhywjdeMBP ~ » adb shell am start -n com.android.calendar/.LaunchActivityStarting: Intent { cmp=com.android.calendar/.LaunchActivity }#启动浏览器xdhywj@xdhywjdeMBP ~ » adb shell am start -n com.android.browser/com.android.browser.BrowserActivityStarting: Intent { cmp=com.android.browser/.BrowserActivity }......#打开秦皇xdhywj@xdhywjdeMBP ~ » adb shell am start -n com.meituan.spawn/.MainActivityStarting: Intent { cmp=com.meituan.spawn/.MainActivity }#打开美团欢迎界面xdhywj@xdhywjdeMBP ~ » adb shell am start -n com.package.name/.activity.WelcomeStarting: Intent { cmp=com.com.package.name/.activity.Welcome }#打开美团主页xdhywj@xdhywjdeMBP ~ » adb shell am start -n com.package.name/.activity.MainActivityStarting: Intent { cmp=com.com.package.name/.activity.MainActivity }2)am start -a:-a 表示action (android.intent.action.MAIN)。下面举一个例子:
#通过-a指定action,打开美团中附近的地图界面xdhywj@xdhywjdeMBP ~ » adb shell am start -a com.meituan.android.intent.action.near_poi_map -n com.sankuai.meituan/.common.map.NearPoiMapStarting: Intent { act=com.meituan.android.intent.action.near_poi_map cmp=com.sankuai.meituan/.common.map.NearPoiMap }
3)am start -d:-d表示data (android.intent.data)。下面举几个例子:
首先看一下在Manifest.xml文件中找几个有data属性的Activity,如下所示:
//登陆界面:<activity android:name="com.meituan.passport.LoginActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:theme="@style/App.Passport"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="www.meituan.com" android:path="/signin" android:scheme="imeituan" /> </intent-filter> <intent-filter> <action android:name="com.meituan.android.intent.action.login" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter></activity> //城市选择界面<activity android:name=".city.CityActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:windowSoftInputMode="adjustPan|stateHidden"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="www.meituan.com" android:path="/city/list" android:scheme="imeituan" /> </intent-filter></activity>
登陆界面的启动方式:
#通过data打开登陆界面xdhywj@xdhywjdeMBP ~ » adb shell am start -d imeituan://com.package.name/signinStarting: Intent { dat=imeituan://www.meituan.com/signin } #通过data开店城市选择界面xdhywj@xdhywjdeMBP ~ » adb shell am start -d imeituan://www.meituan.com/city/listStarting: Intent { dat=imeituan://www.meituan.com/city/list }4)am start -e:在打开activity的时候,带上扩展参数。类似于extra:key–value。
#相当于带extra的intent。其中key和value分别对应于intent中的key value,是不是非常的方便啊。赞一个xdhywj@xdhywjdeMBP ~ » adb shell am start -d imeituan://www.meituan.com/city/list -e key value Starting: Intent { dat=imeituan://www.meituan.com/city/list (has extras) } #跳转到支付结果页面xdhywj@xdhywjdeMBP ~ » adb shell am start -n "com.com.package.name/.pay.PayResultActivity" -e bigOrderId 6782909Starting: Intent { cmp=com.com.package.name/.pay.PayResultActivity (has extras) }那么我们在传intent的时候,是不是经常用到putStringExtra(), putIntExtra,那么这样传指定类型的extra应该怎么处理呢,其实adb也已经给我们设计好了,是不是很赞啊。
putStringExtra():[-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]putIntExtra():[-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]putBooleanExtra():[--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]......#例子:调用putIntExtra():其中key为bigOrderId,value为int类型。am start -n "com.sankuai.meituan/.pay.PayResultActivity" --ei "bigOrderId" 6782909
4,启动Services
单独拉出来说了,上面全都是启动activity,为了不混淆,单独说下启动services。
1)启动一个service,service在后台运行,所以可以去应用程序列表看。参数:-n表示组件。-a表示action。
#其中-a即就是对应的action,-ei:putIntExtra("level",3),-ei:putIntExtra("scale",100).adb shell am startservice -n com.android.music/com.android.music.MediaPlaybackServiceadb shell am startservice -a com.meituan.myservice#结果Starting service: Intent { cmp=com.android.music/.MediaPlaybackService }2)停止service。以AndroidManifest文件中的配置为例子:
<service android:name="com.some.package.name.YourServiceSubClassName" android:permission="com.some.package.name.YourServiceSubClassName"> <intent-filter> <action android:name="com.some.package.name.YourServiceSubClassName"/> </intent-filter></service>启动service和停止service:
#启动serviceadb shell am startservice com.some.package.name/.YourServiceSubClassName#停止serviceadb shell am force-stop com.some.package.name
5,启动Broadcast
也同样单独拉出来说。
发送一个系统广播,模拟手机低电量环境
#其中-a即就是对应的action,-ei:putIntExtra("level",3),-ei:putIntExtra("scale",100).adb shell am broadcast -a android.intent.action.BATTERY_CHANGED --ei "level" 3 --ei "scale" 100
四,查看手机尺寸和密度
1,使用adb查看手机尺寸
2,使用adb查看手机的密度
五、清除应用数据与缓存
六、强制停止应用
七、查看前台 Activity
- Android adb命令使用总结
- Android adb命令使用总结
- android adb 命令总结
- Android adb命令总结
- Android adb 命令总结
- android-adb 命令总结
- Android adb 命令总结
- Android ADB 命令总结
- adb命令使用总结
- Android使用adb命令
- Android adb命令使用
- Android adb 命令使用
- android adb命令使用
- android adb 命令使用
- android adb 命令常用总结
- Android 常用 adb 命令总结
- Android常用adb命令总结
- Android 常用 adb 命令总结
- JQuery Ajax操作
- Windows 10 禁止远程连接
- Jenkins + Git + Maven + tomcat集成环境(Maven安装)
- ubuntu16.04 + hadoop2.7.2 完全分布式集群搭建(备查)
- Android-LinearLayout线性布局
- Android adb命令使用总结
- Pascal VOC 数据集介绍
- 关闭spring boot的banner
- hpu 1267 Cafeteria (01背包)
- B
- Codeforces803F Coprime Subsequences
- LeetCode-520. Detect Capital (JAVA)大写字母的合法性
- 循环队列的实现
- android 四大组件之Activity