ADB 命令
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ADB 命令相关的知识,希望对你有一定的参考价值。
参考技术A 查询设备adb devices
查询手机中的用户
adb shell pm list users
查看设备上的应用包名:
adb shell pm list packages
adb shell pm list packages 打印设备/模拟器上的所有软件包
adb shell pm list packages -f 输出包和包相关联的文件
adb shell pm list packages -d 只输出禁用的包。由于本机禁用没有,输出为空。
adb shell pm list packages -e 只输出启用的包。
adb shell pm list packages -s 只输出系统的包。
adb shell pm list packages -3 只输出第三方的包。
adb shell pm list packages -i 只输出包和安装信息(安装来源)。
adb shell pm list packages -u 只输出包和未安装包信息(安装来源)
adb shell pm list packages -u -3 -e 组合使用
查询带有test的包名
adb shell pm list packages | findstr test
查询安装包路径
adb shell pm path [PackageName]
查询包对应的启动activity
adb shell pm query-activities -a android.intent.action.MAIN -c android.intent.category.LAUNCHER [PackageName]
启动应用
adb shell am start -n "[PackageName]/[ActivityName]" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
如:adb shell am start -n "com.example.test/com.example.test.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
卸载应用
adb shell pm uninstall -k --user 0 [PackageName] -k 表示保存数据 --user 指定用户 id,Android 系统支持多个用户,默认用户只有一个,id=0
如 adb shell pm uninstall com.example.test 对所有用户卸载com.example.test且不保存数据
停用应用
adb shell pm disable [PackageName]
启用应用
adb shell pm enable [PackageName]
清除应用数据
adb shell pm clear [PackageName]
设置应用安装位置
adb shell pm set-install-location
--[0/auto]:默认为自动
--[1/internal]:默认为安装在手机内部
--[2/external]:默认安装在外部存储
获取应用安装位置
adb shell pm get-install-location
查询操作过程中输出的日志
adb logcat > d:\log.txt
如何在Java代码中调用adb命令
我想在Java代码中调用adb命令。
通过代码实现apk文件的安装和卸载,重定向logcat等。
O(∩_∩)O谢谢,急需,等待中。。。。
package com.symbio.ltp.adb;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import com.symbio.ltp.model.ConfigPropertiesData;
import com.symbio.ltp.util.Log;
public class ShellCommand
private String name;
private Process process;
private BufferedWriter writer;
private BufferedReader reader;
private BufferedReader errorReader;
private List<String> list;
private String[] returnValue;
public ShellCommand(String name)
this.name = name;
public String getName()
return name;
public Process getProcess()
return process;
public BufferedWriter getOutputWriter()
return writer;
public BufferedReader getInputReader()
return reader;
public BufferedReader getErrorReader()
return errorReader;
public boolean start(String cmd)
try
process = Runtime.getRuntime().exec(cmd);
writer = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
catch (IOException e)
Log.debug("Exception in shell(" + name + ") -- " + e.getMessage());
return false;
return true;
public boolean exec(String cmd)
String line;
try
writer.write(cmd + "\\n");
writer.flush();
while((line = reader.readLine()) != null)
Log.debug(line);
if(line.equals(ConfigPropertiesData.ltp_success))
return true;
else if(line.equals(ConfigPropertiesData.ltp_fail))
return false;
catch (IOException e)
Log.debug("Exception in shell(" + name + ") -- " + e.getMessage());
return false;
return true;
public String [] execReturn(String cmd)
String line;
list = new ArrayList<String>();
try
writer.write(cmd + "\\n");
writer.flush();
line = reader.readLine();
while((line = reader.readLine()) != null)
if(line.length()>0 && !(line.startsWith("#")))
Log.debug(line);
list.add(line);
if(line.equals(ConfigPropertiesData.ltp_success))
break;
else if(line.equals(ConfigPropertiesData.ltp_fail))
break;
int size = list.size();
returnValue = new String[size];
for (int i = 0; i < size; i++)
returnValue[i] = list.get(i);
catch (IOException e)
Log.debug("Exception in shell(" + name + ") -- " + e.getMessage());
return null;
return returnValue;
public void terminate()
try
writer.write(0x03);
writer.flush();
catch (IOException e)
Log.debug("Exception in shell(" + name + ") -- " + e.getMessage());
参考技术A 安装:
String str = "/aaa.apk";
String fileName = Environment.getExternalStorageDirectory() + str;
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive");
startActivity(intent);
卸载:
Uri packageURI = Uri.parse("package:com.demo.ss");
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
startActivity(uninstallIntent);
不需要用到adb命令的呀追问
我用Runtime实现了安装和卸载。
你上面用Intent,是不是把apk文件放到了sd卡上?
PC端软件设置一个TextArea控件,如何获取apk文件执行时的日志呢?
文件下载肯定都是在SD卡上啊,显示log的话你可以参考下文
http://www.blogjava.net/andteamroid/archive/2011/03/09/346020.html
嗯,谢谢你的回答。。。
我是想将日志传递到PC端软件的一个TextArea控件里。。。
请继续解答。。。
O(∩_∩)O~
焦头烂额了····方便的话,加个扣扣,想请教一下,先谢过了!
q:346347769
以上是关于ADB 命令的主要内容,如果未能解决你的问题,请参考以下文章