React Native Release로 빌드 시 안드로이드에서 axios 사용 시 에러
react-nativeReleaseaxios에러AndroidManifest.xmlHTTPHTTPS보안
원인
API 호출 주소가 HTTPS가 아닌 HTTP여서 발생하였다.
안드로이드에서는 Debug가 아닌 Release모드에서 HTTP를 사용하면 문제가 발생한다.
ClearText Network Traffic
ClearText는 암호화 되지 않는 데이터를 뜻한다고 한다.
ClearText Network Traffic은 ClearText를 이용한 네트워크 흐름을 말하는데, 암호화가 되지 않으니 당연히 보안에 취약할 수 있다. 이러한 네트워크 방식중 대표적인 케이스가 HTTP라고 한다.Android 및 IOS는 이 네트워크를 제한하고 있다고 한다. 그래서 Release모드에서 오류가 발생하게 되는 것이었다.
해결
android/app/src/main/AndroidManifest.xml
파일에android:usesCleartextTraffic="true"
추가
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="kr.co.bocoder.findanimal">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name=".MainApplication"
...
android:usesCleartextTraffic="true" // ----->>> add this
>
<activity
android:name=".MainActivity"
...
>
<intent-filter>
...
</intent-filter>
</activity>
</application>
</manifest>
서버를 HTTP를 임시로 사용하기위해서 이렇게 해결하면 도움이 되겠지만, 만약 HTTP를 쭉 사용해야한다면 보안측면에서 너무 불안정하기때문에, HTTPS로 교체를 권장한다.