
잠깐 홀딩되어 있던 flutter 마이그레이션 작업을 끝마쳤다.
IOS 쪽에서 2023년 4월 기준으로 Xcode 1.4 이하의 배포를 허용하지 않게 되어 더이상 미룰수없게 됐고
속전속결로 진행되었다.
홀딩되어 있는동안 코드가 많이 수정되었고 불가피하게 처음부터 다시 작업..
작업은 오로지 나 혼자, 시간은 매일 칼퇴 기준 여유있게 5일정도 걸렸다.
걱정한것치곤 큰 작업은 아니였다ㅎ

예전에 할땐 코드를 일일히 null safety 문법으로 수정해주느라 오래 걸렸는데...
플러터 명령어중에 한번에 일괄치환해주는게 있었다... (이런 ㅠㅠ)
물론 완벽하진 않지만 일일히 한땀한땀 바꾸는것보단 일괄치환해준 후 수정해주니 생각보다 간단하게 금방 끝났다.
> dart migrate
위 명령어를 치면 마이그레이션 웹서버가 하나 띄어지고
확인을 누르면 null safety 문법으로 자동 적용된다.
(참고로 해당 명령어를 치기전 문법 오류를 제외한 버전업 이슈에 대한 오류는 모두 수정해줘야 한다)
이렇게 수정해 준 후 드디어 앱이 실행되었고..
자동 마이그레이션이 완벽하지 않다보니 빨간화면이 엄청나게 떴다.
null safety 관련 오류였기 때문에 수정하는데 오래 걸리지 않았다. (null check만 잘해주면 됨)
안드로이드 셋팅부분은 거의 손봐줄게 없었고.
gradle 과 파이어베이스 라이브러리 버전만 잘 맞춰주니 되었다.
대망의 iOS 빌드 과정
삼성과 윈도우 유저이다 보니.. ios 빌드 과정이 녹록치 않았다 ㅠ
먼저 flutter 설치후 윈도우에서 환경변수 잡아주듯 맥북에서도 환경변수를 잡아주었다.
1. flutter 다운로드 및 원하는 폴더에 압축을 풀어준다. (여기까진 윈도우와 같음)
2. 터미널에서 환경변수 파일 편집기로 열어주기
vi ~/.zshrc
3. 맨 아랫줄에 flutter bin 파일 경로 지정 후 저장
export PATH="$PATH:~/development/flutter/bin"
4. 환경변수 적용
source ~/.zshrc
5. 마지막으로 잘 적용되었는지 flutter 버전을 확인해준다.
flutter --version
적용해준 flutter 버전이 맞게 적용되어있으면 설정은 끝!
여기까지 해준 후 내 안드로이드 스튜디오의 프로젝트 flutter SDK 설정까지 맞춰준 후
pod install를 실행해주었는데 실행이 안됐다..ㅠㅠ
에러 메세지는 당연히 라이브러리와의 호환문제였고.. 쓸데없이 버전 찾아맞추려고 시간 낭비를 했는데
알고보니 pod update를 먼저 해주어야 했다..!
근데 문제는 pod update 도 다음과 같은 에러메세지와 함께 안됐다는...
알고보니 사용하고 있는 맥북의 설정(?) 문제였고..
반나절 삽질 후 구글신의 도움을 받아 pod install 까지 성공!!
https://inuplace.tistory.com/915
M1 맥북 CocoaPods pod install error 해결
m1 맥북에서 CocoaPods를 설치하고 사용하다 에러를 마주했다. 설치는 잘되었고, pod init까지도 문제없었다. 하지만 pod install을 수행해 본격적으로 패키지를 다운받으려하니 에러가 출력되며 패키지
inuplace.tistory.com
글이 날라갈까 내용 저장..
m1 맥북에서 CocoaPods를 설치하고 사용하다 에러를 마주했다.
설치는 잘되었고, pod init까지도 문제없었다.
하지만 pod install을 수행해 본격적으로 패키지를 다운받으려하니 에러가 출력되며 패키지설치가 되지 않았다.
'Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.'
와 같은 메세지가 출력되면서 설치가 완료되는 것이 정상적인 수행인데, 그것이 이루어지지 않았다.
아무래도 m1이 arm 기반 프로세서이기 때문에 다르게 동작하는 부분이 있는 것 같다.
해결방법
터미널을 Rosetta를 사용하여 열고,sudo gem install ffi를 입력해 ffi를 설치 후 폴더로 이동해 pod install을 수행하면 해결된다. (Rosetta는 Intel 프로세서가 장착된 Mac용으로 제작된 앱을 Apple Silicon이 장착된 Mac에서 사용할 수 있도록 도와준다.)

참고로 터미널을 Rosetta로 여는 방법은 [터미널 아이콘 -> 오른쪽 클릭 -> 정보가져오기에서 Rosetta를 사용하여 열기 체크] 이다.
처음 에러를 마주했을 때는 CocoaPods 자체를 m1전용으로 재설치해야하나했지만, 그럴 필요는 없었고 생각보다 쉽게 해결되어서 다행이었다ㅎ
그리고 마지막으로 만난 빌드 에러는..
'Flutter/Flutter.h' file not found
요건 생각보다 간단하게 해결했다.
ios/Podfile
platform :ios, '11.0'
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
target_is_resource_bundle = target.respond_to?(:product_type) && target.product_type == 'com.apple.product-type.bundle'
if target_is_resource_bundle
config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
config.build_settings['CODE_SIGNING_REQUIRED'] = 'NO'
config.build_settings['CODE_SIGNING_IDENTITY'] = '-'
config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = '-'
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
end
end
podfile 은 요정도로 수정해줬는데
핵심은 platform ios 버전을 11로 올려준것이고
그리고 flutter_additional_ios_build_settings(target) 이 코드를 추가해줘야 한다는 것!
이렇게 ios 배포까지 하루만에 끝!

이제 통합테스트만 남았다~
혼자하는 작업이 아닌 flutter3 버전을 팀원들과 공유했으니 이제 좀 수월해질듯 하다.
여기까지 flutter 마이그레이션 작업 끝!
'플러터 (flutter) > 마이그레이션' 카테고리의 다른 글
| Flutter 플러터 마이그레이션 작업 | 변경된 버튼 들 (0) | 2022.12.20 |
|---|---|
| Flutter 플러터 1.0 프로젝트를 3.0 으로 마이그레이션 해보자 (0) | 2022.12.07 |