【android x86 5.1.1】 adb install 流程分析

本文详细分析了adb install命令在Android x86 5.1.1系统中的执行流程,从adb的main()函数开始,经过adb_commandline()、install_app()、pm_command()、send_shellcommand()等步骤,最终通过adb_write()将应用安装命令写入adb驱动并发送到设备,实现应用的安装。过程中涉及文件传输、shell命令执行等关键操作。
摘要由CSDN通过智能技术生成

adb install 流程解析

相关文件及函数调用流程

adb install 流程

 

system/core/adb/adb.c àmain()

system/core/adb/commandline.c àadb_commandline()

system/core/adb/commandline.c àinstall_app()

system/core/adb/commandline.c àpm_command()

system/core/adb/commandline.c à send_shellcommand()

system/core/adb/Adb_client.c àadb_connect()

system/core/adb/Transport.c à writex()

system/core/adb/Sysdeps_win32.c à adb_write()

system/core/adb/Sysdeps_win32.c->fh_write()

system/core/adb/commandline.c àdo_cmd() à va_start()

 

 

 


 

1、 进入adb

代码位置:system/core/adb/adb.c àmain()

运行adb install命令之后,第一步是进入adbmain函数当中,此处我们的adb命令是从windows上发出的,所以是进入到ADB_HOST当中,所以将命令adb install *.apk去掉adb变成install *.apk传递到adb_commandline(int, char**)

int main(int argc, char **argv)

{

#if ADB_HOST

   adb_sysdeps_init();

   adb_trace_init();

   D("Handling commandline()\n");

   return adb_commandline(argc - 1, argv + 1);

#else

   /* If adbd runs inside the emulator this will enable adb tracing via

    * adb-debug qemud service in the emulator. */

   adb_qemu_trace_init();

   while(1) {

       int c;

       int option_index = 0;

       static struct option opts[] = {

           {"root_seclabel", required_argument, 0, 's' },

           {"device_banner", required_argument, 0, 'b' }

       };

       c = getopt_long(argc, argv, "", opts, &option_index);

       if (c == -1)

           break;

       switch (c) {

       case 's':

           root_seclabel = optarg;

           break;

       case 'b':

           adb_device_banner = optarg;

           break;

       default:

           break;

       }

    }

 

   start_device_log();

   D("Handling main()\n");

   return adb_main(0, DEFAULT_ADB_PORT);

#endif

}

 

2、 判断命令

函数位置system/core/adb/commandline.c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值