adbforandroid
A. Qt for Android问题,真机调试,usb debug打开了。adb的环境变量设置了。输入adb
由于HTC的旧名就是High Tech Computer Corporation,所以很容易知道有关我们设备的信息就是最下面的那条
Bus 002 Device 022: ID 0bb4:0cac High Tech Computer Corp.
现在我们需要记住的就是ID后面的一项数据,在上面的情况中,我们需要记录的是0bb4(不同厂商的设备ID的值可能不一样,所以建议大家在使用ID值的时候先使用lsusb命令查询)。
在/etc/udev/rules.d/中建立文件70-android.rules,其实LZ还不知道这个文件的命名到底有什么规则,在网上也有看到说用51或者50开头的,由于LZ拿70成功配置,所以这边直接沿用。使用
sudo vim /etc/udev/rules.d/70-android.rules
B. 如何在android应用里执行adb 命令
ADB接口的作用主要是让电脑等其它设备控制安卓系统的,所以,称为“中间桥”;
不是为安卓自已用的,自已可直接执行称为SHELL,这与ADB无关。
所以安卓java不一定有封装的ADB类。电脑上有ADB服务程序,端口5037,
它是中间程序,与安卓系统上守护进程(Daemon)通讯。
如果要在自已的手机上应该也能执行adb命令,应该直接跟守护进程
(Daemon)通讯了。网络上可以搜到的方法并不满意。
楼主用exec执行CMD命令,这已不是ADB接口了,这是系统的SHELL了!!!
自已用socket/tcp直接发命令效果不知怎样,地址用127.0.0.1,安卓daemon进程的端口
5555是奇数开始。
。。。。至于ADB对话协议网络可以搜到,建议试一试。
楼上其实要的是SHELL,并不是ADB,我搜到一篇文章,但我并没有试过,
是否需要ROOT,不得而知,附上,你试一试 ,回个话。
满意就采纳!
C. 怎么在Android Studio中执行adb命令
android中执行shell命令有两种方式:1.直接在代码中用java提供的Runtime这个类来执行命令,以下为完整示例代码。publicvoidexecCommand(Stringcommand)throwsIOException{//startthelscommandrunning//String[]args=newString[]{"sh","-c",command};Runtimeruntime=Runtime.getRuntime();Processproc=runtime.exec(command);//这句话就是shell与高级语言间的调用//如果有参数的话可以用另外一个被重载的exec方法//实际上这样执行时启动了一个子进程,它没有父进程的控制台//也就看不到输出,所以需要用输出流来得到shell执行后的输出InputStreaminputstream=proc.getInputStream();=newInputStreamReader(inputstream);BufferedReaderbufferedreader=newBufferedReader(inputstreamreader);//readthelsoutputStringline="";StringBuildersb=newStringBuilder(line);while((line=bufferedreader.readLine())!=null){//System.out.println(line);sb.append(line);sb.append('\n');}//tv.setText(sb.toString());//使用exec执行不会等执行成功以后才返回,它会立即返回//所以在某些情况下是很要命的(比如复制文件的时候)//使用wairFor()可以等待命令执行完成以后才返回try{if(proc.waitFor()!=0){System.err.println("exitvalue="+proc.exitValue());}}catch(InterruptedExceptione){System.err.println(e);}}}2.直接安装shell模拟器,即已经开发好的android应用,启动后类似windows的dos命令行,可以直接安装使用,可执行常用的linux命令,应用在附件。
D. 如何在android应用里执行adb命令
最简单的办法是你可以参考SL4A(Scripting Layer for Android)项目,SL4A支持Python、Perl、JRuby、Lua、BeanShell、JavaScript、Tcl、shell等脚本的执行。其中shell的实现完全可以替代adb。
E. 是否可以使用adb调用安卓包中的任意类(只使用需要的功能,而不要去注册什么的)
通过adb并不能调用安卓包内的任意类,
否则安卓就没有安全性可言了。
adb am也只是因为android做了am 这个工具,
让用户可以通过命令行实现启动activity、service及广播的功能。
其它的功能,am没有提供用户也无法使用。
请采纳,谢谢。
F. 如何使用adb命令查看android中的数据库
1,进入到控制台中,输入adb shell,进入到命令模式的环境中
2,输入:cd /data/data/
3, 选择你所在的数据库文件,比如我的com.android.homework, 输入命令:cd com.android.homework
4, 可以使用ls -l 命令查看当前目录中的文件
5,输入: cd databases 进入到数据库文件中
6, ls -l 显示你数据库中你建立的数据库
7, sqlite3 info.db 进入到你选择的数据库中
8, .tables :查看你建的表
9, select * from table_name;s 可以查看整个表的信息
10, 使用其他的SQL语句可以进一步对表进行操作,注意SQL语句必须用分号(;)结尾
G. 如何通过 usb adb 与 android客户端通讯
usb adb 与 android客户端通讯是一个很重要的应用,必须要掌握扎实这个问题,今天我们来冲一下电吧。
监听代码
private void doListen() {
mServerSocket = null;
try {
mServerSocket = new ServerSocket(mServerPort);
mMainThreadFlag = true;
while (mMainThreadFlag) {
Socket client = mServerSocket.accept();
// 开启线程处理客户端请求并发送响应
ServerCmdTransfor sCmdHandler = new ServerCmdTransfor(this.mContext, client);
mHdList.add(sCmdHandler);
new Thread(sCmdHandler).start();
}
} catch (IOException e1) {
e1.printStackTrace();
/**
* 处理客户端请求并发送响应 这些规则都是由产品经理协商好前后端的通讯协议
*/
private class ServerCmdTransfor extends TCPServerTransfor implements Runnable {
public Handler mNotifyHandler = null;
ServerCmdTransfor(Context context, Socket socket) {
super(context, socket);
}
@Override
public void run() {
Util.log(TAG, Thread.currentThread().getName()
+ " ServerCmdTransfor start");
CmdData data = null;
// 先接收请求
data = readCMD();
Util.log(TAG, Thread.currentThread().getName()
+ " ServerCmdTransfor readCMD ret " + data);
if (data != null) {
// 根据cmdId特殊处理
if (data.cmdId == CmdData.COMMAND_SMS_RECEIVE_REQ) {
// 手机-->PC端的推送
doNotify();
} else {
// 处理
data = TCPServer.this.mCmdHd.processReqCreateResp(data);
Util.log(TAG, Thread.currentThread().getName()
+ " ServerCmdTransfor processReqCreateResp ret "
+ data);
// 然后发送响应
if (data != null) {
boolean ret = sendCMD(data);
Util.log(TAG, Thread.currentThread().getName()
+ " ServerCmdTransfor sendCMD ret " + ret);
try {
mSocket.close();
Util.log(TAG, Thread.currentThread().getName()
+ " ServerCmdTransfor close");
} catch (IOException e) {
e.printStackTrace();
}
}
转载
H. 如何用adb命令 获得Android手机分辨率
在命令行中输入“adb shell” ;进入shell之后,再输入“cat /system/build.prop grep "proct"” 设备信息主要是存放在“/system/build.prop”文件,通过“cat”命令就可以查看了。
拓展资料:
adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方便通过DDMS来调试Android程序,说白了就是debug工具。
它的主要功能有:
* 运行设备的shell(命令行)
* 管理模拟器或设备的端口映射
* 计算机和设备之间上传/下载文件
* 将本地apk软件安装至模拟器或android设备
I. 如何在android程序中执行adb shell命令
android中执行shell命令有两种方式:
1.直接在代码中用java提供的Runtime 这个类来执行命令,以下为完整示例代码。
public void execCommand(String command) throws IOException {
// start the ls command running
//String[] args = new String[]{"sh", "-c", command};
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec(command); //这句话就是shell与高级语言间的调用
//如果有参数的话可以用另外一个被重载的exec方法
//实际上这样执行时启动了一个子进程,它没有父进程的控制台
//也就看不到输出,所以需要用输出流来得到shell执行后的输出
InputStream inputstream = proc.getInputStream();
InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
BufferedReader bufferedreader = new BufferedReader(inputstreamreader);
// read the ls output
String line = "";
StringBuilder sb = new StringBuilder(line);
while ((line = bufferedreader.readLine()) != null) {
//System.out.println(line);
sb.append(line);
sb.append(' ');
}
//tv.setText(sb.toString());
//使用exec执行不会等执行成功以后才返回,它会立即返回
//所以在某些情况下是很要命的(比如复制文件的时候)
//使用wairFor()可以等待命令执行完成以后才返回
try {
if (proc.waitFor() != 0) {
System.err.println("exit value = " + proc.exitValue());
}
}
catch (InterruptedException e) {
System.err.println(e);
}
}
}
2.直接安装shell模拟器,即已经开发好的android应用,启动后类似windows的dos命令行,可以直接安装使用,可执行常用的linux命令,应用在附件。
J. 一台PC连接多个Android手机,使用adb命令可以给这多台手机同时安装一个apk,这样可以实现吗怎么写
你是想用代码实现吗?
你可以启动多个线程,在线程里面进行安装,这样可以同时多个手机安装;
也可以写方法,在方法里面进行安装,这样是顺序安装;
主要方法是:调用 adb install + apk的绝对路径名;
如果有多部手机,调用adb -s + 手机编号(如果不知道怎么获取,请继续回复)+ install + apk绝对路径;
在代码里执行:Runtime.getRuntime().exec(
"adb -s " + devName + " install " + apkAddress);
private void installApkToMobile(String devName, String apkAddress)
{
Process process = null;
String buff = "";
try
{
process = Runtime.getRuntime().exec(
"adb -s " + devName + " install " + apkAddress);
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(), "utf-8"));
while ((buff = br.readLine()) != null)
{
print(buff);
if (buff.contains("INSTALL_FAILED_ALREADY_EXISTS"))
{
print(devName + "已安装");
}
}
br.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
我现在也是在做这样的东西,欢迎继续讨论,相互学习。