android– 为什么exec()启动一个ADB守护进程?

android– 为什么exec()启动一个ADB守护进程?,第1张

概述我正在为我的一些有根电话构建一个应用程序.我想知道是否有任何方法可以卸载系统应用程序,该应用程序随手机运行我的应用程序中的一些代码.我已经尝试通过Runtime.getRuntime().exec()从手机本身运行adbshellpm命令清除COM.PACKAGE.NAME,但命令输出如下:cannotbind'tcp:5038

我正在为我的一些有根电话构建一个应用程序.我想知道是否有任何方法可以卸载系统应用程序,该应用程序随手机运行我的应用程序中的一些代码.

我已经尝试通过Runtime.getRuntime().exec()从手机本身运行adb shell pm命令清除COM.PACKAGE.name,但命令输出如下:

cannot bind 'tcp:5038* Daemon not running. Starting it Now on port 5038*

为什么?

解决方法:

ADB服务器在您的主机(Unix,windows)上启动,默认情况下,绑定到端口5037.客户端(也是您的主机)使用该端口将命令发送到目标设备,在该设备中,命令在系统环境中执行.

参考:

> AndroID开发者网站上的Android Debug Bridge.
> ADB(Android Debug Bridge): How it works? by Tetsuyuki Kobayashi

运行应用程序时,其代码将在环境中执行.因此,当您调用Runtime.getRuntime().exec(“adb shell command”)时,您实际执行的 *** 作是尝试启动另一个adb服务器进程(现在在目标设备上),该进程在tcp端口5038上启动,因为端口5037正忙.

总结一下:你不需要将adb参数传递给exec()方法,这是多余的.而是使用

Runtime.getRuntime().exec("command")

关于以编程方式卸载系统应用程序,您的应用程序必须首先获得su,这超出了问题的范围.虽然,以下链接可能会帮助您开始:

> ANDROID: How to gain root access in an Android application?
> execute shell command from android

总结

以上是内存溢出为你收集整理的android – 为什么exec()启动一个ADB守护进程?全部内容,希望文章能够帮你解决android – 为什么exec()启动一个ADB守护进程?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1101745.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存