如何在android应用里执行adb 命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在android应用里执行adb 命令相关的知识,希望对你有一定的参考价值。

希望写一个apk,该apk能执行一些adb 命令,代码里如何实现?
比如界面里有一个按钮,点了该按钮以后就执行adb命令,如何在click()里写这些adb命令
在电脑上我执行
adb shell
insmod /system/lib/modules/wlan.ko
我现在需要在应用里也达到同样效果,但是
执行
proc = Runtime.getRuntime().exec(“insmod /system/lib/modules/wlan.ko”);
num = proc.waitFor();
num的返回值是255,也就是说没有执行成功,请问如何修改,是否是因为权限问题还是说缺少adb shell这样的类似操作?

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,不得而知,附上,你试一试 ,回个话。

满意就采纳!

 

追问

我修改了提问,是否有解决办法?

追答

楼主其实要的是SHELL,并不是ADB,我搜到一篇文章,但我并没有试过,
是否需要ROOT,不得而知,

参考技术A 1 adb本身是一个客户端服务器应用程序,由3个组件组成,Client, Server(adb), Daemon(adbd),其中Daemon运行在设备上,Client和Server都在客户端。

2 如果你的apk想执行adb命令,需要和adbd建立连接,理论上是可以实现的。

3 最简单的办法是你可以参考SL4A(Scripting Layer for android)项目,SL4A支持Python、Perl、JRuby、Lua、BeanShell、javascript、Tcl、shell等脚本的执行。其中shell的实现完全可以替代adb。追问

我修改了提问,是否有解决办法?

追答

你可以看一下你的apk的UID是不是0,我认为是权限问题,而且我记得android的shell不能执行insmod,需要有busybox才行。

参考技术B

最简单的办法是你可以参考SL4A(Scripting Layer for Android)项目,SL4A支持Python、Perl、JRuby、Lua、BeanShell、JavaScript、Tcl、shell等脚本的执行。其中shell的实现完全可以替代adb。

参考技术C adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方便通过DDMS来调试Android程序,说白了就是debug工具

所以adb命令能够直接在手机内部运行吗???????追问

麻烦看清我的问题再回答

追答

看清了呀,我不认为能够在android程序中执行adb命令。android自身应该没有adb程序,你如何让它运行adb命令?

还有你【比如】中写的应该可以执行linux命令(部分,还不是全部),不是adb命令。。。

追问

我修改了提问,是否有解决办法?

怎么在Android Studio中执行adb命令

android stuidio中默认集成了命令行窗口,你可以在下方的terminal中输入指令就可以使用shell指令。 参考技术A 😊

以上是关于如何在android应用里执行adb 命令的主要内容,如果未能解决你的问题,请参考以下文章

c语言中如何使用android ADB命令??

如何在android程序中执行adb shell命令

如何在android程序中执行adb shell命令

怎么在Android Studio中执行adb命令

常见的ADB命令

怎么在Android Studio中执行adb命令