Android adb shell

Android adb shell 查看包名、权限、进程信息

2018年04月25日 14:38:57 Yjnull 阅读数 6041

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014306335/article/details/80079067

adb 相关命令

  • adb 删除系统应用 : adb shell pm uninstall -k --user 0 包名 (注意风险)
  • adb 运行应用 :adb shell am start -n 包名/包名.活动名
  • adb 查看手机上应用包名 : adb shell pm list packages
  • 查看手机上 apk 文件的安装位置 : adb shell pm list packages -f
  • 查看危险权限:adb shell pm list permissions -d -g
  • 查看进程信息:adb shell ps 或者 adb shell ps | grep 包名
  • zsh 查看当前使用主题 echo \$ZSH_THEME 或者 echo $RANDOM_THEME (使用 random 主题时)

Android 各种目录

Environment.getExternalStorageDirectory() :/storage/emulated/0

Context.getExternalCacheDir() :/storage/emulated/0/Android/data/包名/cache

Context.getFilesDir() :/data/user/0/包名/files

Context.getCacheDir() :/data/user/0/包名/cache

.gitignore规则不生效的解决方法:

把某些目录或文件加入忽略规则,发现并未生效,原因是.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交:

    git rm -r --cached <file>
    git add .
    git commit -m ‘message'
  • 1
  • 2
  • 3

git操作之撤销 commit

    git reset --soft HEAD^
  • 1

该操作参考 git使用情景2

通过命令安装了QQ的apk文件后,准备卸载时,发现用abd shell pm list packages这个命令,查不到QQ对应的包名,不知道什么原因,然后使用adb shell pm list packages -3这个输出第三方的包可以查到

adb shell pm list packages [options] <FILTER>

打印所有软件包,可选择只打印软件包名称中包含<FILTER>的软件包。

扫描二维码关注公众号,回复: 6609892 查看本文章

不使用参数:adb shell pm list packages,打印设备/模拟器上的所有软件包

不使用参数:adb shell pm list packages,打印设备/模拟器上的所有软件包

使用-f参数:adb shell pm list packages -f,输出包和包相关联的文件

使用-d参数:adb shell pm list packages -d,只输出禁用的包。由于本机禁用没有,输出为空。

使用-e参数:adb shell pm list packages -e,只输出启用的包。

使用-s参数:adb shell pm list packages -s,只输出系统的包。

使用-3参数:adb shell pm list packages -3,只输出第三方的包。

使用-i参数:adb shell pm list packages -i,只输出包和安装信息(安装来源)。

使用-u参数:adb shell pm list packages -u,只输出包和未安装包信息(安装来源)。

使用--user参数:adb shell pm list packages --user <USER_ID>,根据用户id查询用户的空间的所有包,USER_ID代表当前连接设备的顺序,从零开始:

使用-e参数且设置过滤条件:adb shell pm list packages -e "ximalaya",只输出启用的包。

Android 通过ADB Shell 强行关闭和启动应用

2018年10月16日 10:39:23 乐自由我 阅读数 2894

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lindroid/article/details/83069028

1.在PC上通过adb 关闭/启动应用

1)通过adb连接设备     adb connect 192.168.1.XX    , 当然也可以通过USB 直接连接; 

2)   执行adb shell ps  查看当前正在运行的进程列表,可以获取进程的名字;

3)执行adb shell am force-stop 包名  即可强行关闭进程,eg:   adb shell am force-stop com.xxx.xxx

      执行adb shell am start -n 包名/启动类的名称 , eg: adb shell am start -n com.xxx.xxx/com.xxx.xxx.SplashActivity 

2.在代码中:

 
  1. try {

  2. //关闭其他应用

  3. Process exec = Runtime.getRuntime().exec("am force-stop 包名");

  4. //打开其他应用

  5. Process exec = Runtime.getRuntime().exec("am start -n 包名/启动类名称");

  6. if (exec.waitFor() == 0) {

  7. //执行成功

  8. }

  9. } catch (Exception e) {

  10. e.printStackTrace();

  11. }

其中,Runtime.getRuntime.exec()  时可能会阻塞UI线程, 所以建议是在子线程中执;

可以参考我的另一篇: 代码模拟物理按键 https://blog.csdn.net/lindroid/article/details/83062250

操作进程,需要权限

 
  1. //允许程序启动其他应用程序

  2. <uses-permission android:name="android.permission.RESTART_PACKAGES"/>

  3. //允许程序调用killBackgroundProcesses(String).方法结束后台进程

  4. <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>

  5. //如果你使用adb connect

  6. <uses-permission android:name="android.permission.INTERNET" />

如果想彻底退出当前进程

 
  1. int pid = android.os.Process.myPid();

  2. String command = "kill -9 "+ pid;

  3. try {

  4. Runtime.getRuntime().exec(command);

  5. } catch (IOException e) {

  6. e.printStackTrace();

  7. }

 
  1. 退出当前应用,并强行回到桌面

  2. Intent startMain = new Intent(context, LoginActivity.class);

  3. startMain.addCategory(Intent.CATEGORY_HOME);

  4. startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

  5. startMain.addCategory(Intent.ACTION_MAIN);

  6. context.startActivity(startMain);

  7. System.exit(0);

1.查看进程

1

adb shell ps|findstr package

 

2.杀死进程

方法1:强制停止APP进程,不会清除APP进程在系统中产生的数据

1

adb shell am force-stop package

执行该命令后没有输出,手机对应进程已被杀死。

方法2:停止APP进程,并且清除这个APP进程产生的所有数据,相当于reset

1

adb shell pm clear package

 

执行该命令后输出success即表示命令执行成功,app进程被杀死,且会清楚所有数据,相当于卸载重装的效果,一般不建议使用。

猜你喜欢

转载自blog.csdn.net/earthwalkerhwattnet/article/details/92077822