Dev/Android

Firebase Emulator Firestore 연결 - Error

healthyryu 2022. 3. 2. 19:45

Firebase 에뮬레이터 FireStore 연결 오류

에러 내용

2022-03-02 11:56:27.571 366-366/? E/android.hardware.power.stats@1.0-service-mock: Failed to getEnergyData
2022-03-02 11:56:27.646 8626-8684/com.healthyryu.app.debug W/Firestore: (23.0.4) [WriteStream]: (be2386) Stream closed with status: Status{code=UNAVAILABLE, description=null, cause=java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 8080) from /:: (port 53300): connect failed: ECONNREFUSED (Connection refused)
        at libcore.io.IoBridge.connect(IoBridge.java:188)
        at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
        at java.net.Socket.connect(Socket.java:621)
        at java.net.Socket.connect(Socket.java:570)
        at java.net.Socket.<init>(Socket.java:450)
        at java.net.Socket.<init>(Socket.java:250)
        at javax.net.DefaultSocketFactory.createSocket(SocketFactory.java:285)
        at io.grpc.okhttp.OkHttpClientTransport$4.run(OkHttpClientTransport.java:555)
        at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:920)
     Caused by: android.system.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
        at libcore.io.Linux.connect(Native Method)
        at libcore.io.ForwardingOs.connect(ForwardingOs.java:204)
        at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:157)
        at libcore.io.ForwardingOs.connect(ForwardingOs.java:204)
        at libcore.io.IoBridge.connectErrno(IoBridge.java:202)
        at libcore.io.IoBridge.connect(IoBridge.java:180)
        at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142) 
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390) 
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230) 
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212) 
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436) 
        at java.net.Socket.connect(Socket.java:621) 
        at java.net.Socket.connect(Socket.java:570) 
        at java.net.Socket.<init>(Socket.java:450) 
        at java.net.Socket.<init>(Socket.java:250) 
        at javax.net.DefaultSocketFactory.createSocket(SocketFactory.java:285) 
        at io.grpc.okhttp.OkHttpClientTransport$4.run(OkHttpClientTransport.java:555) 
        at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
        at java.lang.Thread.run(Thread.java:920) 
    }.

 

자체 PC or Mac 에서 로컬로 Firebase Emulator 실행해서 FireStore 를 테스트할 경우 Android 에서는 다음과 같이 usetEmulaotr 를 해줘야 한다.

FirebaseFirestore firestore = FirebaseFirestore.getInstance();
firestore.useEmulator("10.0.0.2", 8080);

FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
        .setPersistenceEnabled(false)
        .build();
firestore.setFirestoreSettings(settings);

참고 링크

 

Cloud Firestore 에뮬레이터에 앱 연결  |  Firebase Documentation

의견 보내기 Cloud Firestore 에뮬레이터에 앱 연결 앱을 Cloud Firestore 에뮬레이터에 연결하기 전에 전체 Firebase 로컬 에뮬레이터 도구 모음 워크플로를 이해하고 로컬 에뮬레이터 도구 모음을 설치

firebase.google.com

 

여기서 Android 앱에서 host 입력하는 부분에는 loccalhost 를 입력할 경우 이 localhost 는 안드로이드 앱 내부의 localhost 를 의미하지 PC or Mac 의 localhost 를 의미하지 않는다. 그렇기에 10.0.2.2 를 입력해주어야 한다.

 

참고 : https://otrodevym.tistory.com/entry/Flutter-%EB%A1%9C%EC%BB%AC-%EC%84%9C%EB%B2%84%EC%99%80-flutter-%EC%95%B1-%EC%A0%91%EC%86%8D-%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

 

[Flutter] 로컬 서버와 flutter 앱 접속 하는 방법

개요 웹 개발처럼 하나의 PC에서 server와 flutter를 구동하면서 테스트를 진행하는 경우가 있습니다. 웹에서는 localhost를 이용하면 되지만 시뮬레이터(IOS), 에뮬레이터(android)는 하나의 OS라서 localhos

otrodevym.tistory.com

 

반응형