本篇以“adb devices"命令为例,跟踪代码的执行流程。 (1) main()->(2)adb_commandline()->adb_commandline()中的相关源码: if(!strcmp(argv[0], "devices")) { char *tmp; char *listopt; if (argc < 2) listopt = ""; else if (argc == 2 && !strcmp(argv[1], "-l")) listopt = argv[1];…

2016年8月2日 0条评论 5点热度 阅读全文

本篇分析fdevent.c的源代码。 这个源代码文件的工作时创建、监听和处理读写事件。 static fdevent **fd_table = 0; static int fd_table_max = 0; fd_table保存的是以fdevent->fd为索引保存的fdevent指针,即 the_fdevent的值等于fd_table[the_fdevent->fd]。 static void fdevent_register(fdevent *fde) //即将fde添加到fd_table { if…

2016年7月29日 0条评论 5点热度 阅读全文

本篇分析usb_linux_client.c中的usb_init(),它的代码如下: void usb_init() { if (access(USB_FFS_ADB_EP0, F_OK) == 0) { usb_ffs_init(); } else{ usb_adb_init(); } } 调用usb_adb_init(): static void usb_adb_init() { usb_handle *h; adb_thread_t tid; int fd; h = calloc(1, sizeof(usb_…

2016年7月28日 0条评论 5点热度 阅读全文

ADB是Android debug bridge的缩写,它使用PC机可以通过USB或网络与android设备通讯。 adb的源码位于system/core/adb目录下,先来看下编译脚本Android.mk: # Copyright 2005 The Android Open Source Project # # Android.mk for adb # LOCAL_PATH:= $(call my-dir) # adb host tool # ===================================…

2016年7月28日 0条评论 7点热度 阅读全文