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 との通信に失敗する時の対処方法についてでした。
ご参考になれば幸いです。