[FAQ04776]如何默认打开user版本 debug 选项, 默认打开adb 连接【转】

本文转载自:http://blog.csdn.net/thinkinwm/article/details/24865933

Description]

如何默认打开user 版本的USB debug 选项, 默认打开adb 连接

[Keyword]

量产版本 user usb debug root adb 连接

[Solution]
1. 在android 4.0 之前,这个设置是在frameworks/base/service/..../SystemServer.java 里面
设置会根据system property 的persist.service.adb.enable 来设置。您可以看到类似如代码:

[java] view plain copy

  1. // make sure the ADB_ENABLED setting value matches the secure property value
  2. Settings.Secure.putInt(mContentResolver, Settings.Secure.ADB_ENABLED,
  3. "1".equals(SystemProperties.get("persist.service.adb.enable")) ? 1 : 0);
  4. // register observer to listen for settings changes
  5. mContentResolver.registerContentObserver(Settings.Secure.getUriFor(Settings.Secu
  6. ENABLED),false, new AdbSettingsObserver());

而这个persist.service.adb.enable 默认是放在在default.prop 中,在编译的时候在
build/core/main.mk 中确认,

[java] view plain copy

  1. ifeq (true,$(strip $(enable_target_debugging)))
  2. # Target is more debuggable and adbd is on by default
  3. ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1 persist.service.adb.enable=1
  4. # Include the debugging/testing OTA keys in this build.
  5. INCLUDE_TEST_OTA_KEYS := true
  6. else # !enable_target_debugging
  7. # Target is less debuggable and adbd is off by default
  8. ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=0 persist.service.adb.enable=0
  9. 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 中,您也可以
看到类似的代码如:

[java] view plain copy

  1. public  UsbHandler(Looper looper) {
  2. // persist.sys.usb.config should never be unset.  But if it is, set it to "adb"
  3. // so we have a chance of debugging what happened.
  4. mDefaultFunctions = SystemProperties.get("persist.sys.usb.config", "adb");
  5. // sanity check the sys.usb.config system property
  6. // this may be necessary if we crashed while switching USB configurations
  7. String config = SystemProperties.get("sys.usb.config", "none");
  8. if (!config.equals(mDefaultFunctions)) {
  9. Slog.w(TAG, "resetting config to persistent property: " + mDefaultFunctions);
  10. SystemProperties.set("sys.usb.config", mDefaultFunctions);
  11. }
  12. mCurrentFunctions = mDefaultFunctions;
  13. String state = FileUtils.readTextFile(new File(STATE_PATH), 0, null).trim();
  14. updateState(state);
  15. mAdbEnabled = containsFunction(mCurrentFunctions, UsbManager.USB_FUNCTION_ADB);
  16. public void  systemReady() {
  17. // make sure the ADB_ENABLED setting value matches the current state
  18. Settings.Secure.putInt(mContentResolver, Settings.Secure.ADB_ENABLED, mAdbEnabled ?
  19. 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; 即可。

---------------------------------------------------------------------------------------

1. 根据编译命令确定ro.debuggable

build/core/main.mk

[java] view plain copy

  1. ## user/userdebug ##
  2. user_variant := $(filter user userdebug,$(TARGET_BUILD_VARIANT))
  3. enable_target_debugging := true
  4. tags_to_install :=
  5. ifneq (,$(user_variant))
  6. # Target is secure in user builds.
  7. ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1
  8. ifeq ($(user_variant),userdebug)
  9. # Pick up some extra useful tools
  10. tags_to_install += debug
  11. # Enable Dalvik lock contention logging for userdebug builds.
  12. ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.lockprof.threshold=500
  13. else
  14. # Disable debugging in plain user builds.
  15. enable_target_debugging :=
  16. endif
  17. # enable dex pre-optimization for all TARGET projects in default to
  18. # speed up device first boot-up
  19. #add by yanqi.liu for costomization @{
  20. ifneq ($(JRD_IS_GOAL_PERSO),true)
  21. WITH_DEXPREOPT := true
  22. endif
  23. #}
  24. # Turn on Dalvik preoptimization for user builds, but only if not
  25. # explicitly disabled and the build is running on Linux (since host
  26. # Dalvik isn‘t built for non-Linux hosts).
  27. ifneq (true,$(DISABLE_DEXPREOPT))
  28. ifeq ($(user_variant),user)
  29. ifeq ($(HOST_OS),linux)
  30. ifneq ($(JRD_IS_GOAL_PERSO),true)
  31. WITH_DEXPREOPT := true
  32. endif
  33. endif
  34. endif
  35. endif
  36. # Disallow mock locations by default for user builds
  37. ADDITIONAL_DEFAULT_PROPERTIES += ro.allow.mock.location=0
  38. else # !user_variant
  39. # Turn on checkjni for non-user builds.
  40. # Kirby: turn off it temporarily to gain performance {
  41. # ADDITIONAL_BUILD_PROPERTIES += ro.kernel.android.checkjni=1
  42. #  ADDITIONAL_BUILD_PROPERTIES += ro.kernel.android.checkjni=0
  43. # } Kirby
  44. # Set device insecure for non-user builds.
  45. ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0
  46. # Allow mock locations by default for non user builds
  47. ADDITIONAL_DEFAULT_PROPERTIES += ro.allow.mock.location=1
  48. endif # !user_variant
  49. # always enable aed
  50. ADDITIONAL_DEFAULT_PROPERTIES += persist.mtk.aee.aed=on
  51. # Turn on Jazz AOT by default if not explicitly disabled and the build
  52. # is running on Linux (since host Dalvik isn‘t built for non-Linux hosts).
  53. ifneq (true,$(DISABLE_JAZZ))
  54. ifeq ($(strip $(MTK_JAZZ)),yes)
  55. ifeq ($(HOST_OS),linux)
  56. # Build host dalvikvm which Jazz AOT relies on.
  57. WITH_HOST_DALVIK := true
  58. WITH_JAZZ := true
  59. endif
  60. endif
  61. endif
  62. ifeq (true,$(strip $(enable_target_debugging)))
  63. # Target is more debuggable and adbd is on by default
  64. ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1
  65. ADDITIONAL_DEFAULT_PROPERTIES += ro.adb.secure=0
  66. # Include the debugging/testing OTA keys in this build.
  67. INCLUDE_TEST_OTA_KEYS := true
  68. else # !enable_target_debugging
  69. # Target is less debuggable and adbd is off by default
  70. ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=0
  71. ADDITIONAL_DEFAULT_PROPERTIES += ro.adb.secure=1
  72. endif # !enable_target_debugging

2. 确定默认的usb功能

build/tools/post_process_props.py

[java] view plain copy

  1. # Put the modifications that you need to make into the /system/build.prop into this
  2. # function. The prop object has get(name) and put(name,value) methods.
  3. def mangle_build_prop(prop):
  4. #pass
  5. #If ro.mmitest is true, then disable MTP, add mass_storage for default
  6. if prop.get("ro.mmitest") == "true":
  7. prop.put("persist.sys.usb.config", "mass_storage")
  8. # If ro.debuggable is 1, then enable adb on USB by default
  9. # (this is for userdebug builds)
  10. if prop.get("ro.build.type") == "eng":
  11. val = prop.get("persist.sys.usb.config").strip(‘\r\n‘)
  12. if val == "":
  13. val = "adb"
  14. else:
  15. val = val + ",adb"
  16. prop.put("persist.sys.usb.config", val)
  17. # UsbDeviceManager expects a value here.  If it doesn‘t get it, it will
  18. # default to "adb". That might not the right policy there, but it‘s better
  19. # to be explicit.
  20. if not prop.get("persist.sys.usb.config"):
  21. prop.put("persist.sys.usb.config", "none");
  22. # Put the modifications that you need to make into the /system/build.prop into this
  23. # function. The prop object has get(name) and put(name,value) methods.
  24. def mangle_default_prop(prop):
  25. # If ro.debuggable is 1, then enable adb on USB by default
  26. # (this is for userdebug builds)
  27. if prop.get("ro.debuggable") == "1":
  28. val = prop.get("persist.sys.usb.config")
  29. if val == "":
  30. val = "adb"
  31. else:
  32. val = val + ",adb"
  33. prop.put("persist.sys.usb.config", val)
  34. # UsbDeviceManager expects a value here.  If it doesn‘t get it, it will
  35. # default to "adb". That might not the right policy there, but it‘s better
  36. # to be explicit.
  37. if not prop.get("persist.sys.usb.config"):
  38. prop.put("persist.sys.usb.config", "none");

原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/8167340.html

时间: 2024-10-05 11:19:31

[FAQ04776]如何默认打开user版本 debug 选项, 默认打开adb 连接【转】的相关文章

电脑上同时装了多个版本EXCEL如何默认打开excel2013版本呢【已解决】

有的朋友电脑上同时装了Office2010和2013, 表格文件已经选了默认用2013打开,但是每一次打开文件还是2010的,怎么才能设置用2013打开呢? 1.卸载OFFICE2013,再重新安装. 2.卸载所有版本OFFICE,再重装2013. 3.右击表格文件,选择"打开方式"-"选择打开程序",再选择EXCEL2013,并勾选"始终使用选择的程序打开这种文件". excel从入门到精通系列课程资料 原文地址:http://blog.51c

maven 修改默认的JDK版本

maven jdk 版本配置 maven 默认使用的 jdk 版本 新建一个 maven 项目,如下 : 项目左下方出现一个感叹号,JRE 显示的是 1.5 版本.解决方式有两种,一种是配置 pom.xml,一种是配置 settings.xml. 方式一:settings.xml 配置 打开 %maven%/conf/settings.xml 文件并编辑它(%maven% 表示 maven 的根目录) : <profiles>  <profile>    <id>dev

Win10电脑文件夹选项如何打开设置?

文件夹选项是Windows系统中非常重要的一个功能,在这里能对电脑内的文件及文件夹进行各种各样的设置以及操作.在Windows系统升级到Win10版本后,许多界面都发生了变化,文件夹选项也是如此,打开方式有些不同.那么在Win10系统中文件夹选项是怎么打开的呢?我们又该如何对其常用功能进行设置呢?下面就来告诉你. Win10系统文件夹选项怎么打开 1.打开我的电脑,点击上方菜单栏中的"查看"选项,就会出现一些设置选项.这里面都是一些常用的设置,是将原来版本的系统设置都划到了这里,比如图

Android 5.0 版本 USB 调试模式打开方法

Android 4.2 版本 USB 调试模式打开方法 1. 进入“设置”页面,点击“关于平板电脑”.见下图红色方框.   2. 疯狂点击“版本号”,见下图红色方框,直到出现“您现在处于开发者模式!”. 8 3. 出现“您现在处于开发者模式!”.见下图红色方框. 4. 退回到“设置”页面,这时在“关于平板电脑”上面多了一个“开发者选项”,点击进入.见下图红色方框   5. 勾选“USB调试”.见下图红色方框.注意:右上角的开关要保持“打开”状态 11 6. 点击“确定”,允许USB调试.见下图红

CAD中如何打开高版本的CAD图纸进行查看?

CAD中如何打开高版本的CAD图纸进行查看?小编前几天在绘制CAD图纸的时候遇到过这样的问题,就是绘制完CAD图纸后,需要对编辑的CAD图纸进行查看,但是不管怎么操作都打不开,后来才知道原来是CAD图纸的版本太高,那在CAD中如何打开高版本的CAD图纸进行查看?具体要怎么操作?下面小编就来教教大家,不会的朋友可以一起来看看,希望能够帮助到你们. 第一步:首先打开电脑,如果电脑中没有CAD转换器的话,在电脑中任意的打开一个浏览器,就在浏览器的搜索框中搜索迅捷CAD编辑器,然后在搜索的结果中,点击官

CAD编辑器中要怎么打开高版本的CAD图纸

CAD编辑器中要怎么打开高版本的CAD图纸,在我们的日常绘制CAD图纸的过程中,大部分都是使用的绘图工具来进行绘制的,那CAD编辑器就在CAD行业中起着很大的作用,不仅仅能够编辑图纸,而且还能够查看CAD图纸,那CAD编辑器中要怎么打开高版本的CAD图纸呢?那下面不会操作的朋友们,就好好的看看小编下面教给大家的方法吧. 步骤一:如果电脑中没有CAD编辑器的,可以在电脑中打开一个浏览器,在浏览器中直接搜索迅捷CAD编辑器标准版,然后在根据系统提示安装最新版本的CAD编辑器. 步骤二:接下来,安装完

如何用低版本vs打开高版本项目

今天就以vs2010打开vs2013项目为例. 第一步:找到你用vs2013创建的项目,里面有个.sln文件. 注:该文件不要急着用vs打开,先用记事本打开.这时候你会发现里面的代码不是你所熟悉的代码,除了前两行其他的都不是重点,至少与这次讲解没关系. 第二步:在第一步的的前提下,对.sln文件修改. 注:①改version后面的数字为11.00,vs2013会显示为12.00; ②注意第二行内容,意思大概是打开工具版本,vs2013会显示2013,这时候,这个数字也要改为2010. 以上所述,

vs2012打开低版本项目时 出现vs2012警告未能加载包“visual c++ package 解决办法

vs2012 打开 vs2010 项目时 提示的 错误信息. 解决办法 是下载一个 vs2012的 一个补丁包 http://www.microsoft.com/en-us/download/details.aspx?id=36020 初次安装成功后,调试 无法启用,关闭,重新打开项目 即可解决! ======ok. [在此谢谢网上提供解决方案的朋友们,谢谢你们!] vs2012打开低版本项目时 出现vs2012警告未能加载包"visual c++ package 解决办法

使用低版本的VS打开高版本项目的解决方案(以VS2008打开VS2010开发的项目为例)

使用低版本的VS打开高版本项目的解决方案,这里以VS2008打开VS2010开发的项目为例. 右键项目的sln文件以记事本的方式打开: 将对应的前两列版本各降到对应的版本,这边的11.00改为10.00,2010改为2008: 然后使用2008版本打开该sln文件,重新生成项目就OK了. 若是vs2013在vs2010中打开,可以参考此篇文章:如何将VS2013的项目在VS2010中打开(Visual Studio降级打开项目) 本文来自木庄博客>使用低版本的VS打开高版本项目的解决方案(以VS