Android 系统开发常用终端命令

0. 序言

这里总结下日常开发经常使用的终端命令,小伙伴觉得需要可以挑选保存到本地文档,以便使用。
目录列表如下:

  1. 重启相关
    1.1 重启手机
    1.2 重启framework
    1.3 重启(fastboot mode)
  2. 替换相关
    2.1 替换系统应用
    2.2 替换手机services.jar
    2.3 替换手机framework
  3. 查看页面相关
    3.1 查看当前应用栈顶Activity
    3.2 通过action打开对应的页面activity
  4. 查看后台运行相关
    4.1 查看手机运行的jobscheduler
    4.2 查看手机每个进程的内存信息
    4.3 查看某个进程详细的内存信息
    4.4 查看端口占用
  5. 查看手机信息相关
    5.1 查看手机系统版本分类
    5.2 查看应用的hprof信息
    5.3 查看手机里面拥有的sepolicy权限
    5.4 查看如何声明sepolicy权限
  6. 编译相关
    6.1 编译相关模块
  7. 删除相关
    7.1 删除文件夹或文件
    7.2 删除指定进程
  8. 查找相关
    8.1 查询某个文件的位置
    8.2 查询字段位置
    8.3 过滤某个条件
  9. 刷机相关
  10. 复制相关
  11. 发送相关
    11.1 发送广播

1. 重启相关

  • 重启手机

adb reboot

  • 重启framework

adb stop && adb start
当调试framework的时候不用重启手机,只重启framework,节省时间。

  • 重启(fastboot mode)

fastboot reboot

2. 替换相关

  • 替换系统应用

adb push out/target/product/ocean/system/app/TestApp system/app

  • 替换手机services.jar

adb push out/target/product/ocean/system/framework/services.jar system/framework/

  • 替换手机framework

adb push out/target/product/ocean/system/framework/ /system/

3. 查看页面相关

  • 查看当前应用栈顶Activity

adb shell dumpsys activity top | grep "ACTIVITY" -A 0

  • 通过action打开对应的页面activity

adb shell am start -a android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS
如果你想知道这个activity对应的是哪个页面,可以使用此命令

4. 查看后台运行相关

  • 查看手机运行的jobscheduler

adb shell dumpsys jobscheduler |grep "JOB #"
如果你想查看自己开发的应用的jobscheduler在当前手机上是否有效,可以使用这个命令。当然手机因为私人订制的原因,jobscheduler可能生效也可能不生效。

  • 查看手机每个进程的内存信息

adb shell dumpsys meminfo

  • 查看某个进程详细的内存信息

adb shell dumpsys meminfo + 包名/pid

  • 查看端口占用

lsof -i:5000

  • 调用AMS的code方法

adb shell service call activity +code

5. 查看手机信息相关

  • 查看手机系统版本分类

adb shell getprop ro.build.type
区分手机是userdebug,还是user,还是userroot

  • 查看应用的hprof信息

adb shell am dumpheap +pid /data/local/tmp/dumpheap.hprof
17495是应用的pid

  • 查看手机里面拥有的sepolicy权限

/vendor/etc/selinux # busybox vi nonplat_sepolicy.cil

  • 查看如何声明sepolicy权限

07-08 14:34:21.515 5552 5552 W sh : type=1400 audit(0.0:471): avc: denied { execute_no_trans } for path="/system/bin/dumpsys" dev="mmcblk0p49" ino=802 scontext=u:r:system_server:s0 tcontext=u:object_r:system_file:s0 tclass=file permissive=0

以上信息存放到一个文件中,命名为avc.log,然后执行audit2allow -i avc.log即可

============= platform_app ==============
allow platform_app hprof_data_file:dir write;

6. 编译相关

  • 编译相关模块

source build/envsetup.sh
lunch
userdebug
make framework -j4或者make services -j4或者make TestApp -j4

7. 删除相关

  • 删除文件夹或文件

rm -rf Test

  • 删除指定进程

kill -9 2407

8. 查找相关

  • 查询某个文件的位置

find ./ -name TestFile.java

  • 查询字段位置

grep SearchProvider . -rnw

  • 过滤某个条件

adb logcat | grep 708

grep haha -rnw
-r 递归查找
-n 在显示符合范本样式的那一列之前,标示出该列的列数编号
-w 匹配整个单词

9. 刷机相关

chmod +x * -R
adb root
adb remount
adb reboot edl
sudo ./edl-flash.sh

10. 赋值新仓库

repo start test --all
为Android系统下的每个git仓库都创建一个新的分支为test,repo start 相当于 git checkout -b 。

11. 发送广播

adb shell am broadcast -a com.fkq.examaple.TEST_MSG --es data "{"packageName":"com.fkq.example","size":"1000"}"

12. 后续

如果大家喜欢这篇文章,欢迎点赞!
如果想看更多 linux操作 方面的文章,欢迎关注!

你可能感兴趣的:(Android 系统开发常用终端命令)