我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android 设备 设置adb自动监听tcp 5555端口,重启有效

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android 设备 设置adb自动监听tcp 5555端口,重启有效

Android 设备调试有两种连线方式:有线和无线;

有线是通过USB导线连接android设备和电脑端,无线方式是通过连接WIFI,通过TCP的方式,连接设备和电脑端,一般用 5555端口;

有线的调节,只需要打开调试模式基本就可以了,无线连接方式比有线多一步操作,就是需要先通过usb导线连接后,adb 命令行:adb tcpip 5555  开启tcp 连接5555端口;

正常过程是这样的,但是日常开发的时候经常遇到,没有带线,没有笔记本备用,设备不在身边(在隔壁)的情况,设备每次重启都会关闭tcp 555端口,不可能每次都需要拿着电脑/导线去设备前调试,而且,公司没有给我配置笔记本```

这个情况下,就需要设置adb 自动监听5555端口,而且需要重启有效,

说明 : 该情况适用于 root 的设备;

1.adb 查看root权限

我们先通过导线连接设备,通过adb 命令判断,命令行输入 adb shell,#代表已经root过,$代表没有root权限;

(还好还好,我们的屏/设备 属于root过的设备,具有root权限)

2.修改文件

修改/default.prop或者/system/build.prop文件

//添加这一行service.adb.tcp.port=5555

文件后可以添加这一行

但是你会发现/system 文件夹是只读权限的.

你可以通过如下的命令查看该文件权限;

adb shell ls -l /system

这个是我修改后的,你可以看看你的;

要修改build.prop文件,是修改不了的,所以需要解决的是如何修改;

3.Android9.0挂载system文件夹读写

我们知道在Android系统中,system文件夹一般都是只读属性,不管你是root用户还是普通权限用户,所以在开发中,如果我们想要访问和修改system文件夹下的内容的话就需要获取system文件夹的写属性,而因为Android版本的变化,在不同版本下system文件夹修改读写属性的方式也有较大的区别。


Android 8.0以下版本
第一步:要得到system分区的全名
adb shell mount rootfs / rootfs ro 0 0 tmpfs /dev tmpfs rw,mode=755 0 0 devpts /dev/pts devpts rw,mode=600 0 0 proc /proc proc rw 0 0 sysfs /sys sysfs rw 0 0 tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0 none /dev/cpuctl cgroup rw,cpu 0 0 /dev/block/mtdblock0 /system yaffs2 ro 0 0 /dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0 /dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0 /dev/block//vold/179:0 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0 

从/dev/block/mtdblock0 /system yaffs2 ro 0 0 部分可以看得出/system的权限是ro即是read only。

第二步:根据名称重新挂载
mount -o remount /dev/block/mtdblock0 /system mount rootfs / rootfs ro 0 0 tmpfs /dev tmpfs rw,mode=755 0 0 devpts /dev/pts devpts rw,mode=600 0 0 proc /proc proc rw 0 0 sysfs /sys sysfs rw 0 0 tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0 none /dev/cpuctl cgroup rw,cpu 0 0 /dev/block/mtdblock0 /system yaffs2 rw 0 0 /dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0 /dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0 /dev/block//vold/179:0 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0

可以看到/dev/block/mtdblock0 /system yaffs2 rw 0 0,/system拥有rw的权限。

如果要改回去ro权限的话,执行:

mount -o remount,ro /dev/block/mtdblock0 /system 

当/system 目录为读写权限后,就可以随意删除或者替换系统应用了。

Android 8.0以上版本

在Android8.0以上通过以上mount命令,你会发现找不到/system代表的节点和拥有的权限信息,这是因为Android8.0之后谷歌加入了A/B system的特性,system分区跟ramdisk分区打包在一起,因此系统起来之后也就不存在system分区了,而是直接把system镜像挂载到/根目录上。所以/proc/mounts文件中没有包含/system的权限信息,此时如果使用上面的命令:
 

mount -o remount,rw /system 

重新挂载/system分区会报错:

mount: '/system' not in /proc/mounts

因此使用这条命令是不可行的,需要使用下述的命令:

mount -o remount -o rw /

使用这条命令可以临时挂载上/system文件夹,直到下一次重启。
其实为什么root用户会出现/system文件夹无权限写的情况的话,主要原因是/system所属的用户组不是root,而是system用户组,所以需要重新挂载。
当然上面方法不能挂载/system目录的话而且提示“’/dev/root’ is read-only”的话,那么是因为你的设备开启了avb,此时就只能通过下面的方式完全重新挂载整个系统(当然,我暂时没遇到这个情况,大家可以留意一下):
 

adb rootadb disable-verityadb remount

如果adb disable-verity提示需要解锁OEM的话,那么还需要先解锁OEM:

adb reboot fastbootfastboot oem unlockfastboot reboot

提示解锁成功的话,重新执行命令就不会报错了。

4.再修改/system/build.prop

这个时候你就只可以直接操作/system文件夹下的文件了, adb pull,adb push 都可以用了,不过有没有办法可以在android shell中编辑这些文件(比如Linux shell中的vim编辑器)呢,

我看到有个文件说你可以用cat命令,好吧

您可以使用以下方法创建文本

 $ cat > filename.txt

您可以使用以下方法向文本文件添加行:

 $ cat >> filename.txt

两个命令都可以使用终止ctrl-D.

大家也可以试一下,这个也行,cat file文件还可以查看内容~~~

当然,我最后用的还是adb pull到本地,修改后直接adb push~

5.测试一下

这个时候直接新开一个命令窗口,直接adb connect IP:5555,好吧,我尝试的第一次没反应,然后我直接adb  reboot,重启之后重新adb connect IP:5555,竟然真的成功了!然后我重新关机重启,还是可以的,

6.收尾操作

为了设备安全,我们功能完成之后别忘了恢复只读权限

//设置可读写权限# mount -o rw,remount /system//恢复只可读# mount -o ro,remount /system

至此,就算结束了,重启手机还是会生效的

7.代码实现(还未实现)

下面是我打算用代码/程序实现该功能的草稿,下面的函数方法去实现(主要方法)

public void openPort5555(){    try     {        String cmds[] = {            "setprop service.adb.tcp.port 5555",            "stop adbd",            "start adbd"        };        for (int i = 0; i < cmds.length; i++)        {            java.lang.Process process = Runtime.getRuntime().exec(cmds[i]);            int exitCode = process.waitFor();            if (exitCode != 0)             {                throw new java.io.IOException("Command exited with " + exitCode);            }        }        Toast.makeText(this, "Listening on port 55555...", Toast.LENGTH_LONG).show();    }     catch (Exception ex)     {        ex.printStackTrace();        Toast.makeText(this, "An error has occurred: " + ex, Toast.LENGTH_LONG).show();            }}

大家可以尝试一下;

8.drwxrwxrwx

前面的 d 表示这是一个文件夹,后面的 rwxrwxrwx 则表示文件夹的权限:

第 1 个字符表示文件类型(d 表示目录,- 表示普通文件)
第 2~4 个字符表示文件所有者的权限(rwx 表示可读、可写、可执行)
第 5~7 个字符表示文件所在组的权限(rwx 表示可读、可写、可执行)
第 8~10 个字符表示其他用户的权限(rwx 表示可读、可写、可执行)
在这个例子中,文件夹 /sdcard/myfolder 的权限为可读、可写、可执行,无论是文件所有者、文件所在组还是其他用户。

在 Linux 系统中,文件和目录都有属主(owner)和属组(group)。

文件所有者(owner)指的是文件或目录的拥有者,拥有者有最高的权限,可以对文件或目录进行任何操作。

文件所在组(group)指的是文件或目录所属的组,该组中的用户具有一定的权限,能对文件或目录进行特定的操作。

其他用户指的是除了文件所有者和文件所在组的其他用户,这些用户通常拥有最低的权限,只能进行特定的操作。

Linux 系统中的文件和目录权限是以用户身份和用户组身份来区分的,每个文件或目录都有三组权限,分别是文件所有者的权限、文件所在组的权限和其他用户的权限。

第8项 属于水文字的,大家了解一下知识点就可以了,关于第7项,之后我会再继续尝试一下实现的;

参考资料:

https://blog.csdn.net/baidu_38661691/article/details/107481148
https://blog.csdn.net/u013168615/article/details/128560120

来源地址:https://blog.csdn.net/gqg_guan/article/details/132147874

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android 设备 设置adb自动监听tcp 5555端口,重启有效

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录