본문 바로가기

flutter

안드로이드 실기기에서 http 통신 못할때.

실제 기기에서 HTTP 요청이 작동하지 않는 문제는 주로 Android의 보안 정책과 관련이 있습니다. Android 9(Pie) 이상에서는 기본적으로 일반 HTTP 통신을 허용하지 않습니다. 이 문제를 해결하기 위해 다음 단계를 시도해 보세요:

  1. HTTPS 사용: 가장 좋은 해결책은 HTTPS를 사용하는 것입니다. 가능하다면 서버 측에서 HTTPS를 지원하도록 설정하세요.
  2. Android 네트워크 보안 구성 추가: 만약 HTTP를 반드시 사용해야 한다면, 앱의 네트워크 보안 설정을 변경해야 합니다. a. android/app/src/main/res/xml/ 디렉토리에 network_security_config.xml 파일을 생성하고 다음 내용을 추가하세요:
    <?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true" /> </network-security-config>
    b. android/app/src/main/AndroidManifest.xml 파일을 열고 <application> 태그에 다음 속성을 추가하세요:
    android:networkSecurityConfig="@xml/network_security_config"
    예시:
    <application ... android:networkSecurityConfig="@xml/network_security_config"> ... </application>
  3. 앱 다시 빌드 및 설치: 변경사항을 적용하기 위해 앱을 다시 빌드하고 설치하세요.
  4. 권한 확인: AndroidManifest.xml에 인터넷 사용 권한이 추가되어 있는지 확인하세요:
    <uses-permission android:name="android.permission.INTERNET" />
  5. 방화벽 및 네트워크 설정: 기기가 연결된 네트워크에서 필요한 포트가 열려있는지 확인하세요.
  6. 에뮬레이터와 실제 기기의 차이: 에뮬레이터에서는 작동하지만 실제 기기에서 작동하지 않는 경우, 기기의 Android 버전과 보안 설정을 확인하세요.
  7. SSL 인증서 문제: 자체 서명된 인증서를 사용하는 경우, 기기에서 해당 인증서를 신뢰하지 않을 수 있습니다. 개발 중에는 위의 네트워크 보안 구성을 사용하여 이 문제를 우회할 수 있습니다.
  8. 디버그 로그 확인: adb logcat 명령을 사용하여 네트워크 관련 오류 메시지를 확인하세요.