실제 기기에서 HTTP 요청이 작동하지 않는 문제는 주로 Android의 보안 정책과 관련이 있습니다. Android 9(Pie) 이상에서는 기본적으로 일반 HTTP 통신을 허용하지 않습니다. 이 문제를 해결하기 위해 다음 단계를 시도해 보세요:
- HTTPS 사용: 가장 좋은 해결책은 HTTPS를 사용하는 것입니다. 가능하다면 서버 측에서 HTTPS를 지원하도록 설정하세요.
- 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>android:networkSecurityConfig="@xml/network_security_config"<application ... android:networkSecurityConfig="@xml/network_security_config"> ... </application>
- 앱 다시 빌드 및 설치: 변경사항을 적용하기 위해 앱을 다시 빌드하고 설치하세요.
- 권한 확인: AndroidManifest.xml에 인터넷 사용 권한이 추가되어 있는지 확인하세요:
<uses-permission android:name="android.permission.INTERNET" />
- 방화벽 및 네트워크 설정: 기기가 연결된 네트워크에서 필요한 포트가 열려있는지 확인하세요.
- 에뮬레이터와 실제 기기의 차이: 에뮬레이터에서는 작동하지만 실제 기기에서 작동하지 않는 경우, 기기의 Android 버전과 보안 설정을 확인하세요.
- SSL 인증서 문제: 자체 서명된 인증서를 사용하는 경우, 기기에서 해당 인증서를 신뢰하지 않을 수 있습니다. 개발 중에는 위의 네트워크 보안 구성을 사용하여 이 문제를 우회할 수 있습니다.
- 디버그 로그 확인: adb logcat 명령을 사용하여 네트워크 관련 오류 메시지를 확인하세요.
'flutter' 카테고리의 다른 글
안드로이용 배포 빌드하기 (0) | 2024.07.15 |
---|---|
flutter 명령어 (0) | 2024.07.15 |
안드로이드 에서 위치정보 가져올때 권한추가 (1) | 2024.07.15 |
compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1. 오류 해결법 (0) | 2024.07.15 |
Flutter 프로젝트에서 app build.gradle의 Properties가 Cannot Resolve Symbol 일 때 (1) | 2024.07.15 |