zoukankan      html  css  js  c++  java
  • 打开USB调试功能

    如何默认打开user 版本的USB debug 选项, 默认打开adb 连接
     
    【方法】
    1. 在android 4.0 之前,这个设置是在frameworks/base/service/..../SystemServer.java 里面设置会根据system property 的persist.service.adb.enable 来设置。您可以看到类似如代码:
            // make sure the ADB_ENABLED setting value matches the secure property value
            Settings.Secure.putInt(mContentResolver, Settings.Secure.ADB_ENABLED,
                    "1".equals(SystemProperties.get("persist.service.adb.enable")) ? 1 : 0);
            // register observer to listen for settings changes
            mContentResolver.registerContentObserver(Settings.Secure.getUriFor(Settings.Secure.ADB_ENABLED),
                    false, new AdbSettingsObserver());
        
     而这个persist.service.adb.enable 默认是放在在default.prop 中,在编译的时候在build/core/main.mk 中确认, 
     ifeq (true,$(strip $(enable_target_debugging)))
       # Target is more debuggable and adbd is on by default
       ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1 persist.service.adb.enable=1
       # Include the debugging/testing OTA keys in this build.
       INCLUDE_TEST_OTA_KEYS := true
     else # !enable_target_debugging
       # Target is less debuggable and adbd is off by default
       ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=0 persist.service.adb.enable=0 
     endif # !enable_target_debugging
     您需要将: ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=0 persist.service.adb.enable=0  改成
     ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1 persist.service.adb.enable=1 
        
    2. 在android 4.0 之后,因为adb 的控制,统一使用了persist.sys.usb.config 来控制,于是对应的设置点也改到了frameworks/base/service/...../usb/UsbDeviceManager.java 中,您也可以看到类似的代码如:
    public  UsbHandler(Looper looper) {
            // persist.sys.usb.config should never be unset.  But if it is, set it to "adb"
            // so we have a chance of debugging what happened.
             mDefaultFunctions = SystemProperties.get("persist.sys.usb.config", "adb");
            // sanity check the sys.usb.config system property
            // this may be necessary if we crashed while switching USB configurations
            String config = SystemProperties.get("sys.usb.config", "none");
            if (!config.equals(mDefaultFunctions)) {
                Slog.w(TAG, "resetting config to persistent property: " + mDefaultFunctions);
                SystemProperties.set("sys.usb.config", mDefaultFunctions);
            }
            mCurrentFunctions = mDefaultFunctions;
            String state = FileUtils.readTextFile(new File(STATE_PATH), 0, null).trim();
            updateState(state);
            mAdbEnabled = containsFunction(mCurrentFunctions, UsbManager.USB_FUNCTION_ADB);
    public void  systemReady() {
     // make sure the ADB_ENABLED setting value matches the current state
        Settings.Secure.putInt(mContentResolver, Settings.Secure.ADB_ENABLED, mAdbEnabled ? 1 : 0);
     
    而这个persist.sys.usb.config 中adb 的配置是在alps/build/tools/post_process_props.py 中根据ro.debuggable = 1 or 0 来设置,1 就是开启adb, 0 即关闭adb debug. 而这个ro.debuggable 也是在alps/build/core/main.mk 中设置,和2.3 修改类似
    不过您这样打开之后,对于user 版本adb shell 开启的还是shell 权限,而不是root 权限,如果您需要root 权限,需要再改一下system/core/adb/adb.c 里面的should_drop_privileges() 这个函数,在#ifndef ALLOW_ADBD_ROOT 时return 0; 而不是return 1; 即可。
     
     
  • 相关阅读:
    JavaEE基础(01):Servlet实现方式,生命周期执行过程
    Spring 框架基础(06):Mvc架构模式简介,执行流程详解
    Spring 框架基础(05):事务管理机制,和实现方式
    多线程搜索与排序
    mybatis的Mapper代理原理
    spring的RestTemplate使用指南
    探索CAS无锁技术
    两年Java的面试经验
    HashMap多线程并发的问题
    解析Mybaits的insert方法返回数字-2147482646的原因
  • 原文地址:https://www.cnblogs.com/Miami/p/4719055.html
Copyright © 2011-2022 走看看