안드로이드 앱 개발 중 로컬 PC에서 실행 중인 서버(localhost) 에 접속해야 하는 경우가 있다.
하지만 에뮬레이터와 실제 안드로이드 기기는 접근 방식이 다르기 때문에 헷갈리기 쉽다.
- 안드로이드 에뮬레이터
- localhost 그대로 접속 가능
- http://10.0.2.2:<port> 로 PC의 localhost 에 접근 가능하다.
- 안드로이드 실기기 (USB / Wi-Fi)
- localhost 그대로는 접속 불가능
- 실기기에서 localhost는 기기 자기 자신을 의미한다.
1. 실제 안드로이드 기기에서 로컬 PC 서버에 접속하는 방법
방법 1. 같은 Wi-Fi에 연결 + PC의 로컬 IP로 접속
가장 직관적인 방법이다.
# 예시
http://192.168.0.10:8081
전제 조건
- PC와 안드로이드 기기가 같은 Wi-Fi 네트워크
- 서버가 0.0.0.0 으로 바인딩되어 있어야 함
- PC 방화벽에서 해당 포트(예: 8081) 허용
빠르게 테스트하기 좋지만, 네트워크 환경(회사/공용망)에 따라 막히는 경우가 많다.
방법 2. USB 디버깅 + ADB reverse (포트 포워딩)
개발 환경에서 가장 안정적으로 많이 사용하는 방법이다.
- USB로 기기를 PC에 연결
- ADB를 통해 안드로이드 기기의 포트를 PC 포트로 역방향 연결
# 예시
adb reverse tcp:8081 tcp:8081
이렇게 설정하면, 안드로이드 기기에서 http://127.0.0.1:8081 로 접속 시 → PC에서 실행 중인 8081 포트 서버로 요청이 전달된다.
2. Android 실기기에서 “로컬 PC 서버”를 ADB reverse로 붙이는 방법
1. 준비 사항
- USB 디버깅 활성화 : Android 설정 → 개발자 옵션 → USB 디버깅 ON
- PC에 ADB 설치 확인
adb version
- 명령어가 안 뜨면
→ Android SDK Platform-Tools 설치 필요
2. 기기 연결 확인
adb devices
- 기기 시리얼이 보이고 상태가 device → 정상
- unauthorized → 휴대폰에서 USB 디버깅 허용 팝업 승인
3. PC 서버 실행 확인
- PC에서 서버가 특정 포트에서 실행 중이어야 한다.
# 로컬 테스트 (응답이 오면 OK)
curl http://127.0.0.1:8081
4. ADB reverse 설정
adb reverse tcp:8081 tcp:8081
- 의미 : 안드로이드 기기 8081 포트 요청 → PC의 8081 포트로 전달
5. 앱에서 접속 URL 설정
이제 안드로이드 실기기 앱에서 다음 주소로 접속 가능하다.
http://127.0.0.1:8081
# 또는
http://localhost:8081
6. 설정 확인 / 해제 방법
# 현재 설정된 reverse 목록 확인
adb reverse --list
# 특정 포트 해제
adb reverse --remove tcp:8081
# 전체 해제
adb reverse --remove-all
그 외 알아둘 사항
- USB 연결이 끊기면 reverse도 자동 해제됨 → 다시 adb reverse 실행 필요하다.
- 회사 PC 보안 정책으로 ADB가 막힌 경우
- adb devices 에 기기가 안 뜸 → 권한 있는 PC 또는 개인 PC 필요하다.
- Wi-Fi 방식이 안 될 때
- 네트워크 격리 / 방화벽 이슈 가능 → ADB reverse 방식을 권장한다.
댓글