Flutter iOS TestFlight Upload Failure: objective_c.framework Simulator Slice Error

After building a Flutter app with flutter build ipa --release, TestFlight rejected the upload via altool. Here’s what happened, why it happened, and how I automated the fix. The Error UPLOAD FAILED with 3 errors Invalid executable. The "Runner.app/Frameworks/objective_c.framework/objective_c" executable references an unsupported platform in the x86_64 slice. Simulator platforms aren't permitted. Invalid executable. The "Runner.app/Frameworks/objective_c.framework/objective_c" executable references an unsupported platform in the arm64 slice. Simulator platforms aren't permitted. Unsupported Architectures. The executable for Runner.app/Frameworks/objective_c.framework contains unsupported architectures '[x86_64]'. The build succeeded and the IPA was generated just fine — the problem was at upload time. ...

2026-03-09 · 4 min read · Seunghan
Hotwire Native Ios Tab Bar Patterns

Hotwire Native iOS Tab Bar App — HotwireTabBarController Implementation and Debugging

Here are the problems encountered when switching from a single Navigator to the HotwireTabBarController pattern while wrapping a Rails app with Hotwire Native. Bugs that were invisible in the simulator surfaced on TestFlight, and local dev environment settings got tangled – multiple points where time was wasted. 1. HotwireTabBarController Basic Structure Instead of a single Navigator, each tab has its own independent Navigator and WKWebView. // AppTab.swift enum AppTab: String, CaseIterable { case home, ai, request var systemImage: String { switch self { case .home: return "house" case .ai: return "message" case .request: return "checkmark.circle" } } var selectedSystemImage: String { switch self { case .home: return "house.fill" case .ai: return "message.fill" case .request: return "checkmark.circle.fill" } } var url: URL { let base = AppDelegate.baseURL switch self { case .home: return base.appendingPathComponent("dashboard") case .ai: return base.appendingPathComponent("conversations") case .request: return base.appendingPathComponent("service_requests") } } var hotwireTab: HotwireTab { HotwireTab( title: "", image: UIImage(systemName: systemImage)!, selectedImage: UIImage(systemName: selectedSystemImage)!, url: url ) } } // SceneController.swift core part private lazy var tabBarController: HotwireTabBarController = { let controller = HotwireTabBarController(navigatorDelegate: self) controller.load(AppTab.allCases.map(\.hotwireTab)) // Show only tab icons, remove text controller.viewControllers?.forEach { vc in vc.tabBarItem.title = nil vc.tabBarItem.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0) (vc as? UINavigationController)?.delegate = self } return controller }() To remove tab titles and keep only icons, both tabBarItem.title = nil and imageInsets adjustment are needed. Setting only title to nil leaves the icon position unchanged, looking awkward. ...

2025-12-26 · 6 min read · Seunghan
Flutter Ipa No Codesign Api Key Testflight

flutter build ipa Failure Cause and TestFlight Deployment with --no-codesign + API Key

When managing Flutter iOS apps across multiple Apple accounts, you may find that make testflight works perfectly in one project but the same Makefile fails in another. Here is a case I ran into today. Symptoms Error (Xcode): No signing certificate "iOS Development" found: No "iOS Development" signing certificate matching team ID "XXXXXXXX" with a private key was found. Running flutter build ipa fails with this error. The Distribution certificate is in the Keychain, but it says the Development certificate is missing. ...

2025-11-04 · 5 min read · Seunghan
Flutter Ios Build Dark Mode Logout Debugging

Flutter iOS Deployment Debugging Collection: 5 Build Errors + Dark Mode Hardcoding + Logout Bug

I was trying to push a build when multiple issues hit at once. The code generator failed, files were missing, the build number got rejected, UI had hardcoded dark mode colors, and logout wasn’t clearing tokens. Going through them one by one. 1. Retrofit Optional Parameter Syntax Error -> .g.dart Generation Failure Symptoms When running dart run build_runner build, some API service files produce: Expected to find ')' Cause Wrong placement of optional parameters ({}) in Retrofit abstract methods. ...

2025-11-01 · 6 min read · Seunghan
Ios Sso Entitlements Testflight Errors

iOS TestFlight Deployment Debugging: From SSO Errors to Entitlements Mismatch

Here are the errors repeatedly encountered while uploading multiple Flutter apps to TestFlight. 1. Apple Sign-In Error 1000 SignInWithAppleAuthorizationException(AuthorizationErrorCode.unknown, The operation couldn't be completed. (com.apple.AuthenticationServices.AuthorizationError error 1000.)) Cause This occurs because the Sign in with Apple capability is missing from Runner.entitlements. Solution Both places must be configured. 1. ios/Runner/Runner.entitlements <key>com.apple.developer.applesignin</key> <array> <string>Default</string> </array> 2. Apple Developer Console developer.apple.com -> Identifiers -> Select app Bundle ID -> Check Sign in with Apple -> Save ...

2025-08-30 · 4 min read · Seunghan
Ios Codesign Testflight Full Setup

iOS Distribution Certificate Full Setup: Distribution Cert to APNs to Provisioning Profile to TestFlight

This is a summary of reconfiguring code signing settings from scratch while uploading a Flutter app to TestFlight. The process uses manual signing + App Store Connect API Key instead of Xcode automatic signing. Overall Flow [1] Issue Distribution Certificate [2] Issue APNs Certificate (CSR generation required) [3] Enable Push Notifications on App ID [4] Create Provisioning Profile (App Store, Push included) [5] xcodebuild archive + export (API Key authentication) [6] Upload to TestFlight via xcrun altool 1. Distribution Certificate Apple Developer -> Certificates -> + -> Select Apple Distribution. ...

2025-06-18 · 4 min read · Seunghan
Privacy Policy Terms Disclaimer Contact