Flutter로 앱 개발하면서 만났던 이슈들
웹뷰를 감싸는 Flutter 앱을 만들면서 여러가지 이슈를 겪었다. 기억에 남는 이슈를 여기에 (두서없이ㅎ) 남겨보겠다. 참고로 나의 상황은 아래와 같다.
- 크로스 플랫폼으로 앱을 개발해보는 것은 처음이었다. 안드로이드 개발만 했던 나에게는 다른 진영의 개발은 상당히 생소했다.
- 물론 Xcode도 처음 사용해보았다. 뿐만아니라 iOS 개발 및 배포와 관련된 경험이 모두 처음이었다.
- Flutter를 다루는 것도 처음이었다
Xcode 빌드 Fail이 될 때
Flutter로 개발하더라도 안드로이드와 iOS는 개별로 빌드를 해야한다. iOS는 Xcode로 빌드를 했는데... 처음부터 잘 될리가 없다. 안드로이드의 clean and build와 같은 방법이 있을 것으로 예상했고 예상대로 그런 방법이 있었다. 빌드 혹은 Run이 잘 안된다 싶으면 일단 아래부터 수행해보자.
- Delete podfile.lock (Do NOT delete PodFile)
- Delete .symlinks folder
- Delete pods folder
- Navigate to ios directory in terminal and run pod install
- Open the xcworkspace file in xcode
- Select product -> clean build folder
- Run the project from xcode once. All subsequent builds should work in your ide
만약 해당 이슈가 iOS보다 플러터 이슈에 가깝다면 아래 방법을 시도해보자.
- run flutter clean
- Delete the following files in the ios folder: Podfile and Podfile.lock and the folder Pods
- run flutter pub get
- go to the 'ios' folder using cd ios
- run pod install --repo-update (to install the pods again, and if u face any problem try without --repo-update)
- 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가지 셋팅
.