Android user编译版本 默认打开adb及关闭adb设备认证

本文介绍如何在Android的user模式下,默认开启ADB调试功能,通过修改main.mk文件中的配置实现,便于批量设备测试。

Android编译有3种方式:

  1. eng
  2. userdebug
  3. user

 

三种编译方式的不同,这里暂不做具体描述,但可以告诉大家如何去了解这三种编译方式产生的区别:

在source build/envsetup.sh   lunch xx之后,会将变量TARGET_BUILD_VARIANT赋值为eng或者userdebug或者user

然后你就可以在build目录下去grep TARGET_BUILD_VARIANT这个变量的使用情况,从而分析出这三种编译方式的区别

(注:想学习android编译原理的同学,可以仔细学习build目录,鼓励自己学习源代码)

 

 好了,开始正题,我们知道通常正式发布的android产品,如果你想使用adb来连接设备,那么需要进入开发者选项中打开允许adb调试的开关,那么你才能进行adb连接的,那么如果某种特殊的需求出现在你面前,“我们不想提供开发者选项,而且将有大批量的设备需要在user模式下进行测试“,这时你会想到的就是,那我把adb默认打开吧

 

打开方式如下:

打开build/make/core/main.mk文件

1,找到

ifeq($(user_variant),user)

    ADDITIONAL_DEFAULT_PROPERTIES += ro.adb.secure=1        ===>改成0

endif

 

2,找到

ifeq (true,$(strip $(enable_target_debugging)))

    xxxxxxxxxxxxxx

else

    ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=0        ===>改成1

endif

修改上述两处地方后,再编译user版本的image,adb就是默认可以使用的了,也不需要设备验证

 

如果你对上面的两处修改做研究的话,就会发现其实真正影响adb的就是persist.sys.usb.config和ro.adb.secure这两个属性

然后你就可以从源码中这两个属性的使用来学习adb这个东东了,再具体点的我就不多说了,欢迎大家学习源代码后与我一起讨论,加油!

<think>好的,我现在需要帮助用户解决在特定Android用户版本中默认开启ADB调试授权的问题。首先,我得回顾一下用户提供的引用内容,看看有没有相关的信息可以利用。引用1提到了修改代码将ADB默认开启,引用2和3讨论了开启ADB调试的方法,引用4提到Android T默认启用ADB,引用5则涉及硬件配置和日志抓取。用户的问题是针对用户版本(user build)的Android系统,默认开启ADB调试授权,这可能涉及到系统级别的修改,因为用户版本通常比调试版本(eng或userdebug)有更多的限制。 首先,我需要确认用户的需求:他们可能是在开发或生产环境中需要预配置设备,使得ADB调试默认开启,而无需用户手动操作。这在用户版本中通常是关闭的,因为安全考虑,但有些情况下,比如内部测试或特定用途的设备,可能需要这样的配置。 接下来,根据引用1中的代码示例,修改Settings.Global.ADB_ENABLED的默认值可能是一个方法。但用户版本可能没有开发者选项,或者需要系统签名权限才能修改。因此,可能需要修改系统源码中的相关部分,并重新编译系统镜像。例如,在系统启动时初始化ADB_ENABLED为1,或者修改adb的配置文件。 另外,引用5提到需要硬件飞线和日志抓取,这可能是在调试阶段需要的步骤,但用户的问题更偏向于软件配置。所以可能需要结合系统源码修改和属性设置。 需要注意的是,用户版本通常不允许adb默认开启,因此可能需要绕过某些安全检查,比如修改系统属性ro.adb.secure或ro.debuggable,但这些属性在user build中可能被设置为0,导致adb不可用。因此,可能需要修改系统属性,并重新编译系统。 此外,引用4提到Android T默认启用ADB,但用户可能使用的是较旧版本,所以需要针对特定版本进行调整。例如,在Android 9及更高版本中,路径可能有所不同,需要找到对应的设置位置。 总结步骤可能包括:修改系统源码中的ADB默认设置,调整系统属性,重新编译并刷写系统镜像,处理USB配置,以及可能的签名和权限问题。同时,需要注意安全风险,并确保符合设备的使用场景。 最后,生成相关问题时要考虑用户可能进一步询问的内容,比如如何修改系统属性、绕过签名验证,或者处理特定Android版本的差异等。</think>在Android用户版本中默认开启ADB调试授权需要系统级修改,以下是具体实现方法: ### 一、系统源码修改方案 1. **修改ADB全局默认值** 在`frameworks/base/core/java/android/provider/Settings.java`中强制设置`ADB_ENABLED`值为1: ```java public static final int ADB_ENABLED_DEFAULT = 1; // 原值为0 ``` 2. **系统服务初始化配置** 在`system/core/adb/daemon/main.cpp`中增加启动时自动激活: ```cpp property_set("persist.service.adb.enable", "1"); property_set("sys.usb.config", "adb"); ``` 3. **USB权限配置** 修改`device/<厂商>/<平台>/init.target.rc`: ```bash on boot setprop sys.usb.configfs 1 setprop persist.sys.usb.config adb ``` ### 二、关键属性配置 需在`build.prop`中设置: ``` ro.adb.secure=0 ro.debuggable=1 persist.service.adb.enable=1 ``` *注意:user版本需解锁bootloader并重新签名系统镜像[^5]* ### 三、签名验证绕过 修改`build/core/main.mk`: ```makefile ifeq ($(TARGET_BUILD_VARIANT),user) - ADDITIONAL_DEFAULT_PROPERTIES += ro.adb.secure=1 + ADDITIONAL_DEFAULT_PROPERTIES += ro.adb.secure=0 endif ``` ### 四、USB调试授权白名单 在`frameworks/base/services/usb/java/com/android/server/usb/UsbDeviceManager.java`中添加自动授权逻辑: ```java if (mSettings.getCurrentFunctions().contains("adb")) { mUsbHandler.grantAdbDebugPermission(); // 自定义授权方法 } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值