본문 바로가기
프로그래밍/Flutter & Dart

Flutter trouble shooting

by 어느덧중반 2020. 7. 5.
반응형

- 잘 되던 빌드가 갑자기 안될 때가 있다.

  • 에러문구 D8: Cannot fit requested classes in a single dex file
  • 원인 : 앱 및 앱이 참조하는 라이브러리에서 메서드가 65,536개를 초과하면 앱이 Android 빌드 아키텍처의 제한에
              도달했음을 알리는 빌드 오류가 발생합니다.
    개발에 실수해서 생긴건 아니고 pjt에 포함된 메소드 개수가 65,536개가 초과되면 발생하는 오류
  • 조치방법 : android/app/build.gradle에 설정 변경해주기

오류 캡쳐
multiDexEnabled와 multidex 의존성 추가로 해결

 

- 쿼리스냅샷을 가져오는데 시간이 걸려 null 오류가 발생하는 경우가 있다.

  또는 가져오는동안 값이 바뀌지 않아 최초 초기화값인 0으로 표시되는 경우가 있다.

  후자의 경우는 setState를 통해 설정을 바꿔주었는지 확인이 필요했었다.

  그리고, initState에선 async/await 을 쓸 수 없어서 별도의 메소드로 분리하여 async/await을 사용했다.

  (아직도 어렵고 헷깔린다)

 

await Firestore.instance.collection("ScoreHistory")
        .document(widget.userId)
        .collection("score")
        .where('subject', isEqualTo: '부동산학개론')
        .getDocuments().then((value) => part1QuerySnapshot = value);
    if(part1QuerySnapshot != null) {
      print('여길 타느냐...?');
      for (int i = 0; i < part1QuerySnapshot.documents.length; i++) {
        setState(() {
          part1AverageScore += part1QuerySnapshot.documents[i].data['score'];
        });
      }
      setState(() { // setState를 통해 값바꿔주기를 하니 실시간으로 데이터를 읽어온 후 값이 변경되었다.
        part1SubmitCnt = part1QuerySnapshot.documents.length;
        part1AverageScore /= part1SubmitCnt;
      });
    }

값을 읽어오기 전에는 0으로 보이고 CircularProgressIndicator() 로 보여지는 동안 값을 가져오고 그 후에 바뀐 값으로 보인다.

 

- Firebase에서 document의 where 조건을 사용할 때 field값으로 찾고 싶은 경우 아래처럼 조건을 추가하면 된다.

  (나는 단순히 'field' == '해당값'으로 해보려고 했는데 안되길래 검색해보니 해답을 찾을 수 있었다.)

.where("key", isEqualTo: "value")

 

 

- firebase auth 다운그레이드 후 빌드시 오류가 생긴다. 아래와 같이 조치하니 정상 작동했다.

  1. 터미널에서 : 플러터 클린
  2. Podfile.lock 삭제
  3. 포드 폴더 삭제
  4. Podfile 삭제 (기존 Podfile을 백업했습니다)
  5. 터미널에서 : pod init
  6. 터미널에서 : pod install
  7. 이전 Podfile의 내용을 pod init 명령으로 생성 된 Podfile에 복사했습니다.
  8. pod install
  9. 터미널에서 : 플러터 런

다시 빌드하니 이제 정상 작동한다.

 

- google_sign_in 을 쓰려고 하는데 아래와 비슷한 에러가 나는 경우, 해결방법은 XCode에 URL Scheme 추가를 해주면 된다.
github.com/googlesamples/google-services/issues/81

 

Trying to sign in crashes and gives me: ''Your app is missing support for the following URL schemes' · Issue #81 · googlesampl

I'm running the following code versions on iOS 9: Installing Google (1.1.0) Installing GoogleAppUtilities (1.0.0) Installing GoogleAuthUtilities (1.0.1) Installing GoogleInterchangeUtilities (1...

github.com

  1. 먼저 Xcode 프로젝트를 열고 ios / Runner.xcworkspace를 실행한다.

  2. Xcode 프로젝트에서 GoogleServiceInfo.plist를 찾아 REVERSED_CLIENT_ID (오른쪽)를 클릭하여 복사한다.

  3. Runner -> Info -> URL Types로 이동하여 +를 클릭합니다.

  4. URL SCHEME에 위에 복사한 REVERSED_CLIENT_ID을 추가해준다.

 

- firebase functions deploy할 때 아래의 오류가 난다면 firebase logout > firebase login 한 후에 다시 시도해보자.

functions: Upload Error: HTTP Error: 403, Unknown Error

 

반응형

댓글