본문 바로가기

Dev Workbooks/Dev for Fun

[Android:Tip] Failed to upload *.apk on device 'emulator-5554'

안드로이드 SDK를 1.1 r1으로 업그레이드 했다.
사실 아직 학습중이므로 업그레이드 해야 할 이유 자체는 없었지만,
그래도 학습중 최신 SDK는 따라가려 애쓴다.

SDK 교체 후, Eclipse에서
MyAndroidTemplate이라는 프로젝트를 생성,
실행 버튼을 눌렀건만...

아래와 같은 오류 메시지가 나온다.

[2009-03-06 16:37:38 - MyAndroidTemplate] ------------------------------
[2009-03-06 16:37:38 - MyAndroidTemplate] Android Launch!
[2009-03-06 16:37:38 - MyAndroidTemplate] adb is running normally.
[2009-03-06 16:37:38 - MyAndroidTemplate] Launching: net.wizzie.android.app.MyAndroidTemplate
[2009-03-06 16:37:38 - MyAndroidTemplate] Automatic Target Mode: using existing emulator: emulator-5554
[2009-03-06 16:37:38 - MyAndroidTemplate] WARNING: Unknown device API version!
[2009-03-06 16:37:38 - MyAndroidTemplate] Failed to upload MyAndroidTemplate.apk on device 'emulator-5554': Unable to open sync connection!

말하자면, SDK 1.1 r1의 버전과 에뮬레이터의 버전(emulator-5554)이 맞지 않는다는 얘긴데...
실제 안드뢰드 SDK 1.1 r1의 tools 폴더에 있는 에뮬레이터를 실행해 보면 아래와 같은 화면을 볼 수 있다.


그렇다! SDK 1.1 r1의 에뮬레이터는 5556으로, 이클립스에서 선택한 에뮬레이터 버전(5554)와 다르다!

처음에는 5554나 5556이 에뮬레이터의 버전인 줄 알았으나,
그것이 아니란 것을 에뮬레이터를 여러 개 띄워 봤을 때 버전이 아니라는 것을 깨달았다.

아래 그림을 보자. 에뮬레이터를 여러 개 띄웠을 때 모습이다.


즉 저 번호는 에뮬레이터를 식별하기 위한 ID 값인 셈이다.
저 번호는 Eclipse IDE와 에뮬레이터가 통신하기 위한 포트이다.
emulator-5554란 의미는 에뮬러에터가 5554 포트를 열고 실행된다는 의미이다.
(그렇다면 emulator-5554는 이미 떠 있다는 이야기일까?)

[2009-03-06 16:37:38 - MyAndroidTemplate] Automatic Target Mode: using existing emulator: emulator-5554
-> 이 로그를 보자면, Target Mode를 Manual로 해서 에뮬레이터를 선택하면 되지 않을까 싶다.

구글링을 통해 우여곡절 끝에 찾은 방법은 다음과 같다.

1. 프로젝트 실행 프로파일을 연다.
2. Target 탭을 누르고, Device Selection Mode 항목을 Automatic -> Manual 로 바꾼다.

여기까지의 그림이다.


3. 다시 실행을 해 보면 Device Chooser가 뜬다.


4. 여기서 Target Device를 선택하지 않은 채로 좌측 하단의 Launch Emulator 버튼을 누르면 된다.

우여곡절 끝에 SDK 버전에 맞는 에뮬레이터를 띄우기는 했는데...
근본적인 해결 방법은 아닌 것 같고,
매번 Device Chooser를 봐야 할테니 귀찮을 것 같기도 하다.

혹시 이와 같은 어려움을 겪었던 분이나
해결 방법을 알고 계신 분은 제보 바랍니다.