React Native で開発した Android アプリをGoogle Play で公開した時のみ、API との通信に失敗するという現象に遭遇しました。
DeployGate というテストアプリ配布サービスを使っていた時は問題なかったので、発見が遅れました…。
解決にあたり、参考にさせていただいた記事はこちらから。
React Native android app not working in release – Stack Overflow
https://stackoverflow.com/questions/57289466/react-native-android-app-not-working-in-release
どうやら、私と全く同じ現象にお悩みだったようです…!
解決方法ですが、AndroidManifest.xml
の <application>
に android:usesCleartextTraffic="true"
を追加するだけでした。
サンプルコードは下記のとおりです。
<manifest ...... <application ...... android:usesCleartextTraffic="true"> </application> </manifest>
上記を追加後、アプリをリリース用でビルドし、実行したところ、API と通信できるようになりました!
ただ、他にも色々試していて、 android/app/build.gradle
に minifyEnabled true
と shrinkResources true
を追加したりもしていたので、もしかしたらこちらが効果的だった可能性もなくはない…。
android { buildTypes { release { ...... minifyEnabled true shrinkResources true } } }
でも、タイミング的には android:usesCleartextTraffic="true"
を追加した後に正常に動き出したので、恐らくこれで解決できたと思っていいと思います。
ちなみに、全く同じコードの iOS アプリは問題なかったので、React Native というより、Android に問題があるのでは?と早めに気づけたことも良かったですね。
以上、Google Play で公開した React Native の Android アプリだけ API との通信に失敗する時の対処方法についてでした。
ご参考になれば幸いです。