macOS Sequoia 업데이트에 따라 Xcode16 버전 업데이트가 진행되었다.
Flutter에서도 빌드, 런타임, 배포간 에러가 발생했으며, 수정 방법을 간락히 요약하고자한다.
1. Bitcode 비활성화
Xcode 16에서부터는 Bitcode 비활성화가 필요했다.
대부분의 솔루션에서 Build Settings - ENABLE_BITCODE = NO 를 하면된다고하지만, 외부 라이브러리에게는 다른 방법이 필요했다.
나에게 발생한 에러는 이것이다.
Asset validation failed Invalid Executable. The executable 'Runner.app/Frameworks/NaverThirdPartyLogin.framework/NaverThirdPartyLogin' contains bitcode.
NaverThirdPartyLogin의 Bitcode 비활성화가 필요했으며, 예시는 다음과 같다.
podfile를 변경해야한다.
post_install do |installer|
bitcode_strip_path = `xcrun --find bitcode_strip`.chop!
def strip_bitcode_from_framework(bitcode_strip_path, framework_relative_path)
framework_path = File.join(Dir.pwd, framework_relative_path)
command = "#{bitcode_strip_path} #{framework_path} -r -o #{framework_path}"
puts "Stripping bitcode: #{command}"
system(command)
end
Dir.glob('Pods/**/NaverThirdPartyLogin.framework').each do |framework|
framework_executable = File.basename(framework, ".framework")
framework_relative_path = File.join(framework, framework_executable)
strip_bitcode_from_framework(bitcode_strip_path, framework_relative_path)
end
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
end
end
빌드단계에서 해당 프레임워크의 Bitcode를 제거한다.
프로젝트에 발생한 에러명을 파악 후 적용하면될것이다.
하지만 우선 외부라이브러리라면, 최신버전에서 적용이되어있을 수 있으니 가장 최신버전을 먼저 파악하는게 좋을 것 같다.
2. InAppWebView의 빌드에러
6.1.0 InAppWebView를 사용중이였다.
지금 당시 6.1.3버전까지 출시가 되어 있지만, min Dart SDK에 걸려서 아직 버전을 올릴 수 가 없었다.
따라서 6.1.0버전을 사용하면서 빌드에러를 수정해야했다.
pubspec.yaml - dependency_overrides 아래 다음을 추가하여 해결했다.
flutter_inappwebview_ios:
git:
url: https://github.com/andychucs/flutter_inappwebview.git
ref: master
path: flutter_inappwebview_ios
ios inappwebview를 master브런치것으로 오버라이드하는 것처럼 느껴진다.
빌드 후 웹뷰 페이지들을 확인 했을때, 현재까지 특이사항은 없어보인다.
Xcode 16부터는
3. 'UIApplication' does not conform to protocol 'Launcher' Xcode 16
외부앱/브라우저 처리를 위해 사용중이던 'url_launcher' 패키지에서 발생했다.
해결 : 'url_launcher_ios 6.3.1을 수동설치했다.
------
다음부터는 런타임간 발생했다. 네이버로그인 함수에서 해당 에러메시지가 노출됐다. (기능동작도 하지않음)
BUG IN CLIENT OF UIKIT: The caller of UIApplication.openURL(😃 needs to migrate to the non-deprecated UIApplication.open(:options:completionHandler:). Force returning false (NO).
UIApplication.open 가 deprecated된것으로 파악된다.
네이버로그인으로 https://pub.dev/packages/flutter_naver_login 를 사용중이다.
1.8.0버전에서 더 이상 업데이트가 이루어지지 않고있는데,
네이티브(swift)에서는 공식적으로 수정이 됐지만 해당 외부라이브러리는 naver에서 지원하는것이 아니라, 수정을 기다릴 수가 없다.
메소드채널을 이용한 네이티브 구현 예정이다.
'Flutter' 카테고리의 다른 글
[Flutter] IOS 배포심사 리젝 (ITMS-91061) (0) | 2025.02.24 |
---|---|
[Flutter] 웹 라우팅을 Go Router 적용 (0) | 2025.02.18 |
[Flutter] Android Studio에 GitHub Copilot 설치하기 (2) | 2024.09.23 |
[Flutter] 화면 계속 켜두기 (절전모드 전환방지) (0) | 2024.09.09 |
[Flutter] home_widget 구현 (0) | 2024.09.03 |