본문 바로가기
  • 어서오세요.
  • 안녕하세요~
flutter

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

by ozero 2024. 7. 15.

실제 기기에서 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 명령을 사용하여 네트워크 관련 오류 메시지를 확인하세요.