1. 编译的时候需要开启ENABLE_USER2ENG=true
2. system/core/init/Android.mk 读取ENABLE_USER2ENG来设置 DUSER2ENG
目的是在property_service.c的check_perms允许修改这些属性:
ro.secure
ro.debuggable
persist.service.atci.usermode
persist.sys.usb.config
persist.user2root.root
persist.service.adb.enable
3. system/core/adb/Android.mk读取ENABLE_USER2ENG来设置 DALLOW_ADBD_ROOT
目的是在adb.c的should_drop_privileges允许adbd允许在root权限
4. 在XXXUser2Root/Android.mk读取ENABLE_USER2ENG以便控制是否将XXXUser2Root 编译进入系统
a. XXXUser2Root接受来自系统的android_secret_code//SECRET_CODE,SECRET_CODE来自dialer中输入的 *#*#SECRET_CODE#*#*
b. 通过Settings.Secure.ADB_ENABLED先关闭adb
将ro.secure改为0,ro.allow.mock.location改为1,ro.debuggable改为1,persist.sys.usb.config改为adb,acm
5.在拨号画面输入 *#*#SECRET_CODE#*#*,触发android_secret_code//SECRET_CODE的广播,从而进入4的XXXUser2Root