안드로이드을 자동으로 컨트롤 하는 방법이 다양하다.

 여기서 ADB을 연결하여 안드로이드 자동화를 하는걸 목표로 공부한걸 기록하도록 한다.


 ADB[각주:1]를이용하면, 사용자가 폰을 건들지 않아도 Touch 이벤트를 일으킬 수 있다.

단, 여기서 매우 빠르게 필요한 경우면, 안 쓰는게 낫다.[각주:2]


 먼저, 자기가 만든 프로그램과 ADB랑 연결하는 방법을 기록한다.


 실행 프로그램과 PIPE로 연결 하기 위해선 FindWindows을 이용해야되지만, 이 방법은 자식 프로세서를 연결한다.


 CreateProcess라는 걸 이용하면, 자식 프로세서가 생성 및 실행이된다. 실행될 프로세서는 ADB이고, 부모 프로세서는 작성하는 프로그램이 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    STARTUPINFO si={0,};
    PROCESS_INFORMATION pi;
 
    char command[80= {0,};
 
    sprintf(command,"./adb.exe shell",NULL);
 
    si.cb=sizeof(STARTUPINFO);
    si.dwFlags=STARTF_USESTDHANDLES;
 
    rtv=CreateProcess(NULL,
                      command,
                      NULL,
                      NULL,
                      TRUE,
                      NULL,
                      NULL,
                      NULL,
                      &si,
                      &pi);
 
 
cs


 이렇게 추가하게 되면, adb의 shell과 연결이 되게 된다.

 차후에 STDIN과 STDOUT을 받는 방법을 기록하도록 한다.



  1. ADB란, Android DeBuger을 뜻한다. Android의 프로그램을 만들때나 기기를 점검할때 사용하기도 한다. [본문으로]
  2. ADB에선 이벤트를 보낼때, 아무리 빨라도 0.5초 가량의 시간이 들게 된다. [본문으로]
Posted by JunkMam
,