recover模式下的adbd是用了一个libminadbd的静态库,我们来看下mk文件
LOCAL_SRC_FILES := \
fuse_adb_provider.cpp \
minadbd.cpp \
minadbd_services.cpp \
LOCAL_CLANG := true
LOCAL_MODULE := libminadbd
LOCAL_CFLAGS := $(minadbd_cflags)
LOCAL_CONLY_FLAGS := -Wimplicit-function-declaration
LOCAL_C_INCLUDES := bootable/recovery system/core/adb
LOCAL_WHOLE_STATIC_LIBRARIES := libadbd
LOCAL_STATIC_LIBRARIES := libcrypto libbase
include $(BUILD_STATIC_LIBRARY)
主函数minadbd.cpp如下,这个就是adbd的简单流程,当然这里用了libadbd的静态库。
#include "minadbd.h"
#include <errno.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include "adb.h"
#include "adb_auth.h"
#include "transport.h"
int minadbd_main() {
adb_device_banner = "sideload";
signal(SIGPIPE, SIG_IGN);
// We can't require authentication for sideload