摘要:本文主要介绍设备连接电脑后如何去除“一律允许使用这台计算机进行调试”对话框,并且能够正常使用。通过代码的修改达到此效果。
Android8.0 user版本使用adb root(且不用授权adb key)
上面超链接有详细的修改流程。
user版本不同于userdebug和eng,会要求设备连接电脑时进行授权,
在android低版本(Lollipop)在build/make/core/main.mk文件中将以下代码注释即可
## user/userdebug ##
...
ifeq ($(user_variant),user)
ADDITIONAL_DEFAULT_PROPERTIES += ro.adb.secure=1
endif
...
但在高版本中,除了此属性判断外,还有宏开关ALLOW_ADBD_NO_AUTH控制:
/system/core/adb/daemon/main.cpp
int adbd_main(int server_port) {
...
if (ALLOW_ADBD_NO_AUTH && !android::base::GetBoolProperty("ro.adb.secure", false)) {
auth_required = false;
}
...
}
如果auth_required=true,就会进行接下来的授权流程:
auth_required初始为true:
/system/core/adb/adbd_auth.cpp
bool auth_required = true;
是否授权判断:
/system/core/adb/adb.cpp
static void handle_new_connection(atransport* t, apacket* p) {
...
if (!auth_required) {
handle_online(t);
send_connect(t);
} else {
send_auth_request(t);
}
...
}
所以,除了修改ro.adb.secure,还需要修改ALLOW_ADBD_NO_AUTH:
/system/core/adb/Android.mk
LOCAL_CFLAGS += -DALLOW_ADBD_NO_AUTH=$(if $(filter userdebug eng,$(TARGET_BUILD_VARIANT)),1,0)
由于只有userdebug/eng/user的区分,所以可以直接注释后添加LOCAL_CFLAGS += -DALLOW_ADBD_NO_AUTH=1
也可以加user进行过滤。