Flutter로 앱 개발하면서 만났던 이슈들
728x90
반응형

웹뷰를 감싸는 Flutter 앱을 만들면서 여러가지 이슈를 겪었다. 기억에 남는 이슈를 여기에 (두서없이ㅎ) 남겨보겠다. 참고로 나의 상황은 아래와 같다.

  • 크로스 플랫폼으로 앱을 개발해보는 것은 처음이었다. 안드로이드 개발만 했던 나에게는 다른 진영의 개발은 상당히 생소했다.
  • 물론 Xcode도 처음 사용해보았다. 뿐만아니라 iOS 개발 및 배포와 관련된 경험이 모두 처음이었다.
  • Flutter를 다루는 것도 처음이었다

 

 

Xcode 빌드 Fail이 될 때

Flutter로 개발하더라도 안드로이드와 iOS는 개별로 빌드를 해야한다. iOS는 Xcode로 빌드를 했는데... 처음부터 잘 될리가 없다. 안드로이드의 clean and build와 같은 방법이 있을 것으로 예상했고 예상대로 그런 방법이 있었다. 빌드 혹은 Run이 잘 안된다 싶으면 일단 아래부터 수행해보자.

  1. Delete podfile.lock (Do NOT delete PodFile)
  2. Delete .symlinks folder
  3. Delete pods folder
  4. Navigate to ios directory in terminal and run pod install
  5. Open the xcworkspace file in xcode
  6. Select product -> clean build folder
  7. Run the project from xcode once. All subsequent builds should work in your ide

 

만약 해당 이슈가 iOS보다 플러터 이슈에 가깝다면 아래 방법을 시도해보자.

  1. run flutter clean
  2. Delete the following files in the ios folder: Podfile and  Podfile.lock and the folder Pods
  3. run flutter pub get
  4. go to the 'ios' folder using cd ios
  5. run pod install --repo-update (to install the pods again, and if u face any problem try without --repo-update)
  6. Run your app, from command line using 'flutter run' which will take a little bit longer

 

참고자료
- No podspec found for `flutter_user_agentx` in `.symlinks/plugins/flutter_user_agentx/ios`
- Build Failed for flutter project in Xcode

 

 

 

 

'Flutter/Flutter.h' file not found 

위에서 언급한 방식으로도 해결안되는 에러가 있었다. "'Flutter/Flutter.h' file not found"는 분명 플러터 이슈일텐데 Xcode에서 에러를 계속 출력했다. 한 개발자는 결국 iOS 폴더를 재생성하는 방법을 선택했다. 나 역시 이를 따라해보았고 이후에 이런 이슈는 없었다. 해당 컨텐츠가 상당히 잘 정리했기에 솔루션을 여기 남기지 않고 링크만 공유한다.

  • Taek-In Jeong님 블로그 : 'Flutter/Flutter.h' file not found 해결방안

 

 

Command PhaseScriptExecution failed with a nonzero exit code

역시 Xcode에서 확인한 에러이다. (ㅂㄷㅂㄷ) 이 역시도 가장 처음에 소개한 방식으로는 해결할 수 없었다. 하지만 누군가는 답을 찾을 것이다. 개발을 완료하고 Archive하는 과정에서 이 에러를 확인할 수 있다. Cocoapods에서 생긴 이슈로 해결법은 아래와 같다.

  • 아래 경로에서 Pods-Runner-frameworks.sh를 찾는다
    • (프로젝트명)/ios/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh
  • readlink에 -f 옵션을 추가한다
if [ -L "${source}" ]; then
  echo "Symlinked..."
  source="$(readlink -f "${source}")"
fi

 

참고자료
- Xcode 에러: Command PhaseScriptExecution failed with a nonzero exit code

 

 

 

webview_flutter와 flutter_inappwebview

플러터에서 웹뷰를 구현하고 싶을 때 가장 많이 사용하는 webview_flutter를 사용한다. 하지만 경우에 따라서는 웹뷰에 많은 기능을 요구할 때가 있다. 자바스크립트를 실행시키고 싶다거나 웹 로컬 스토리지에 특정 데이터를 저장하고 싶다거나 웹뷰를 생성할 때 특정 로직을 실행시키고 싶다거나 등등. 그런 과정에서 webview_flutter로는 한계를 느낄 때가 있다.

 

그런 경우에는 flutter_inappwebview를 사용해보자. version 5는 22년 12월, version 6는 23년 6월에 업데이트되면서 꾸준히 관리되는 웹뷰 플러그인이다. 이용편의성도 높고 iOS/안드로이드 모두 문제없이 커버된다. webview_flutter에서 제한적이었던 부분도 flutter_inappwebview에서는 쉽게 해결될 수 있다. (그런게 있었는데 기억이 나질 않는다.) 그러니 웹뷰를 추가할 때 2가지를 모두 고려해보자.

 

 

 

 

 

그 외 내가 참고했던 자료들 (2023년 7월 시점까지 유효한 자료)
- TestFlight에 수동 배포하기
- Flutter aab 파일, 디버그 기호가 업로드되지 않았다는 경고
- 열심히 만든 어플을 구글 플레이 스토어에 배포 해 보자
- webview_flutter에서 쿠키 사용하기
- flutter_inappwebview로 hybrid app 만들기
- googleutilities framework failed no such file or directory react 문제해결 방법
- 웹뷰뿌시기(webview) 자주 쓰는 10가지 셋팅

 

.

728x90
반응형