Androidエミュレータで Firestore と連携できない
とりあえず Firestore コンソール上で作成した Collection データを取得しようと下記のようなコードを書いてエミュレータで実行すると、Log になにも表示されないという問題がありました👾
val db = FirebaseFirestore.getInstance() db.collection("countries") .get() .addOnSuccessListener { for (document in it) { var hoge = document.get("name") as String Log.i("Hoge", "${hoge}") } } .addOnFailureListener { Log.w("Hoge", "Error getting documents.", it) }
問題点
どうやら、エミュレータからネットワークに接続できていないようでした🤔
改善
エミュレータでネットワークに接続するには Google Public DNS IP addresses を使用する必要があるらしく、指示通り使用している Wi-Fi の DNS サーバに 8.8.8.8
IPv4 を追加して、エミュレータを再起動するとネットワーク接続ができるようになり、Firestore との通信も確認できるようになりました✨
参考
- https://developers.google.com/speed/public-dns/docs/using
- https://stackoverflow.com/questions/42736038/android-emulator-not-able-to-access-the-internet