莫问天涯路几重,轻衫侧帽且从容。这篇文章主要讲述Android系统设置Android adb 开关的方法相关的知识,希望能为你提供帮助。
本文转载自:http://www.wxtlife.com/2015/11/24/Android-set-adb-status/
想第一时间获取我的最新文章,请关注公众号: 技术特工队在整机系统开发中,一般系统默认的adb开发是打开的,那么在对外发布的系统中,肯定是不希望默认打开adb的,但是在开发的过程中,肯定希望能够通过某种操作打开adb,便于调试,这就需要在系统的某个部位做一个开关了。那么这篇文章就是说说这边是如何做到在系统中增加一个adb开关。
- 在系统中有一个usb deubg的开关,此开关是打开usb调试的对adb 但是通过默认设置的开发者模式都可以将其打开。
- adb 启动肯定会启动了一个
adbd
服务,那么手动将该服务kill掉就可以关闭adb服务了.当然这样是在adbd启动后可以这么做,但是还是直接默认就不启动服务吧,需要的时候在打开吧。
- adb 启动肯定会启动了一个
adbd
服务实际是再系统启动中
init.rc
文件中启动的,里面有很很多部分有调用start adbd
或者restart adbd
这部分是android启动流程中zygote(受精卵)启动的,这部分涉及整个安卓的启动流程,以及init.rc
文件的定义和使用大家可以查看网上资料。首先要将所有系统中
start adbd
和restart adbd
的部分将其注释掉,不使用系统默认启动方式。一般都是在init.rc
文件中,在使用find . -iname "init*.rc" | xargs grep "adbd"
将系统中所有有关adbd服务的都将其搜索出来,避免遗漏。再开看看
init.rc
文件中的adbd服务是怎么定义的:1 2 3 4 5 6 | # adbd is controlled via property triggers in init.< platform> .usb.rc service adbd /sbin/adbd class core socket adbd stream 660 system system disabled seclabel u:r:adbd:s0 |
sbin/adbd
文件为adbd服务,在init.rc
文件中定义服务,那我们就使用init.rc
文件中的触发器来控制adbd服务的打开与关闭。定义一个属性persist.sys.adbd.on
来标记adb的开关状态,定义触发器内容如下:1 2 3 4 5 | on property:persist.sys.adbd.on=1 start adbd on property:persist.sys.adbd.on=0 stop adbd |
persist.sys.adbd.on
改变的时候在init.rc中能够收到改变的消息。且当属性值为1的时候,则会调用start adbd
,当为0的时候则会调用stop adbd
,因为adbd是一个服务,通过start和stop即可控制,这样通过程序中设置property属性即可切换adb的状态了。大致的实现过程就是这样了,口才文采不行,表达不好,见谅。
这里面需要了解一些Android启动过程,以及init文件定义等。
提示:要设置系统属性需要系统权限才行,所以这种也只是自己开发系统应用才起作用。
关于权限相关的文章参考http://blog.csdn.net/a345017062/article/details/6254402
推荐阅读
- spring-boot application.properties设置最全指南
- 关于如何在Visual Studio上仿真调试安卓的U3D应用
- android SDK安装配置
- 张高兴的 Xamarin.Forms 开发笔记(Android 快捷方式 Shortcut 应用)
- 激活win8.1系统过程中需要访问验证微软服务器怎样办
- win8系统中如何刻录光盘?win8系统刻录光盘的3个步骤
- win8自带虚拟光驱在啥地方?win8怎样运用自带的虚拟光驱
- win8系统自带的视频播放器怎样用?win8自带视频播放器运用图文详细教程
- 怎样打开win8自带杀毒软件?充分运用win8自带杀毒软件的办法