inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

배달앱 클론코딩 [with React Native]

[안드로이드] 실 기기로 axios call이 실행이 안 되는 경우 해결책

해결된 질문

1233

Si Choi

작성한 질문수 5

0

ㅁ 문제점 

- Physical Device를 케이블로 연결한 후, 실제 ip 주소를 dotenv에 입력했는데 axios가 작동을 안 함.

- axios.post 후 response를 console.log 할 시 "undefined"가 뜸

 

ㅁ 해결책 1 - 내부 ip 주소와 외부 ip 주소 각각 시도하기 

저 같은 경우는 맥북 m1 pro를 쓰고 있는데, 네이버에서 검색한 ip 주소(외부 ip 주소)는 작동하지 않았습니다.

그래서 192나 128로 시작하는 내부 ip 주소를 이용하니 정상 작동했습니다. 

** 관련 내용은 강사님과 나눈 댓글 등을 참조해주시면 됩니다. 

 

 

ㅁ 해결책 2 - 로컬 서버와 실 기기의 포트를 연결하는 방법

ip주소를 입력하는 방식으로도 해결이 안 되면, 맥북의 로컬 서버를 케이블로 연결된 디바이스로 연결하는 방식으로 진행할 수 있습니다. 

 

1 - MainApplication.java에서 Flipper 관련 아래 코드 제거(plugin이 간혹 네트워크에 지장을 준다는 이유)

initializeFlipper(this, getReactNativeHost().getReactInstanceManager());

 

2 - dotenv 파일은 아래와 같이 localhost로 설정을 하고 

API_URL=http://localhost:3105

 

3 - npm run android 후 터미널에 

adb devices // adb devices를 통해 <device name> 확인
adb -s <device name> reverse tcp:3105 tcp:3105

 

위 명령어의 뜻은 첫 "tcp:3105"은 맥북의 로컬 서버이고, 뒤에 있는 "tcp:3105"은 핸드폰의 포트를 연결한다 정도로 이해하면 될 것 같습니다. 

 

아래 링크 참조:

https://velog.io/@adguy/android-avm%EC%97%90%EC%84%9C-axios-%EC%82%AC%EC%9A%A9%EC%8B%9C-network-error

https://jaygould.co.uk/2018-11-07-react-native-connecting-development-server-debugging/

 

 

react-native

답변 1

1

제로초(조현영)

실기기에서 브라우저를 열어서 ip:3105를 할 때 접근이 안 된다면 컴퓨터와 핸드폰이 다른 네트워크를 쓰고 있는 상황입니다.

0

Si Choi

답변 감사드립니다 강사님! 

 

이게, 저도 이해가 안 되는게 에뮬레이터에서는 정상 작동하고 있고,

실기기와 맥북에서 ip 주소를 확인해도 같은데,

axios.post를 할 때 response가 undefined가 뜨고 있어서요 TT...

(실기기가 공기기이기는 한데, 이 문제는 아니겠죠?)

 

config.url하고 resonse를 콘솔로 확인해보면 아래 같이 나오고 있습니다 TT... 

DEBUG: api url is http://<내 아이피 주소>:3105
DEBUG: response is undefined

 

** 연결이 안 되는 문제는 제가 좀더 시도해보고, 원인 발견하면 업데이트 해놓겠습니다. 

0

제로초(조현영)

백엔드 콘솔에도 아무 것도 안 찍히는 상황이시죠?

0

Si Choi

네네...

 

일단 계속 안 돼서 아래 방법들 시도해봤습니다. 

1 - MainApplication.java에서 Flipper 관련 아래 코드 제거(plugin이 간혹 네트워크에 지장을 준다는 이유)

initializeFlipper(this, getReactNativeHost().getReactInstanceManager());

** 제가 소개한 workaround를 시도할 때도 initializeFlipper를 안 하면 axios가 작동하지 않더라구요..

 

2 - AndroidManifest.xml 수정 및 xml/network_security_config 설정

AndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> // 코드 추가 

    <application
      android:usesCleartextTraffic="true" // 새로 추가 
      android:name=".MainApplication"
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:allowBackup="false"
      android:theme="@style/AppTheme"
      android:networkSecurityConfig="@xml/network_security_config"> //새로 추가 -> 로컬 호스트 및 ip 주소들 설정

 

main/res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <!-- Without localhost setting, it's unable to connect metro with app. -->
        <domain includeSubdomains="true">127.0.0.1</domain>
        <!-- For physical phone, 10.0.0.1 is the address connect to computer -->
        <domain includeSubdomains="true">10.0.0.1</domain>
        <domain includeSubdomains="true">58.120.200.21</domain> // 카페에서 작업 중인데, 카페 아이피 주소입니다
        <!-- For AVD, 10.0.2.2 is the address connect to computer -->
        <domain includeSubdomains="true">localhost</domain>
    </domain-config>
</network-security-config>

 

** 위에는 저도 링크를 찾지 못 하고 있는데, 어떤 아티클에서 저런 식으로 아이피 주소를 차라리 명시해놓으면, 인식할 수도 있다고 하여 시도해보았습니다.

** 혹시 제가 adb reverse를 하면서 연결에 지장을 줬나 싶어서, adb kill이나 adb disconnect 시도 후에도 안 되고 있네요 TT

0

제로초(조현영)

핸드폰 브라우저에서는 58.120.200.21:3105할 때 응답 오나요? networkSecurityConfig는 사실 없어도 되긴 합니다. 카페 아이피라서 포트를 함부로 못 여는 상황일 수 있습니다.

0

Si Choi

이게 카페가 아닌 집에서 했을 때도 마찬가지로 안 되었고, 

방금 시도해봤는데, 핸드폰 브라우저에서도 응답은 안 오고 있습니다 TT ..

0

제로초(조현영)

ip가 192나 128로 시작하는 내부 아이피 말고 외부 아이피로 해보시겠어요?

0

Si Choi

제로초님, 이 모든게 제 불찰이었습니다 TT... 

네이버로 검색된 ip 주소(외부 ip 주소) 말고, 192나 128로 시작하는 내부 ip 주소를 사용하니깐 되네요... 

 

** 아침부터 안 돼서... 이제 그만 포기하려고 했는데 끝까지 도와주셔서 넘 감사드립니당 🙏

앱실행시 네이버맵 [401] 에러

0

1062

2

스타일링 라이브러리

0

160

2

expo, cli 선택 중에 고민이 있습니다.

0

180

2

JDK 버전이 달라도 괜찮나요?

0

240

2

dimenstion usewindowdeminstion

0

130

3

[맥 전용]환경 설정하기 1편 & [맥 전용]환경 설정하기 2편의 영상이 안나옵니다.

0

217

1

jdk11 버전과 gradle 버전의 호환성 관련 질문드립니다.

0

407

2

강의 외 질문입니다!

0

164

2

react native랑 맞는 ui 라이브러리 어떤게 좋을까요?

0

1552

2

react native와 spring boot 연결

0

365

1

java가 아닌 .kt에서 code push 에러가 발생합니다.

0

222

2

flipper 239 에러가 발생합니다.

0

172

2

package.json에 /lib/panino.js 문제입니다.

0

480

2

window - mac 협업 과정 질문합니다

0

221

1

ios 빌드 중 RCTBridgeDelegate.h import 오류

0

294

2

ios 앱 빌드 중 hermesEnabled 관련 오류발생

0

249

2

Socket 연결시 질문 드립니다.!

0

157

2

wifi 환경에서 axios 통신이 로컬서버에서 안됩니다.

0

430

2

iOS render error 질문드립니다.

0

417

2

iOS 가상머신 오류

0

173

2

npc react init 명령어 실행시 발생되는 오류

0

224

1

nom start 시 오류

0

122

1

NextJS 기반으로 만들어서 웹뷰 React Native로 배포 가능한가요?

0

1019

2

안드로이드 rn75 버전에 맞게 설정 중에 android13 다운로드에 대해서 막혔습니다!

0

187

2