Skip to content

App Store Connect Rejection (90208) with flutter_gemma iOS Frameworks — Invalid Bundle / Minimum OS Version Mismatch #1

@naitik-le

Description

@naitik-le

Title: App Store Connect Rejection (90208) with flutter_gemma iOS Frameworks

Hi team,

I’m facing App Store Connect rejection issues while using flutter_gemma on iOS.

Rejection Errors

90208: Invalid Bundle. The bundle Runner.app/Frameworks/LiteRtMetalAccelerator.framework does not support the minimum OS Version specified in the Info.plist.

90208: Invalid Bundle. The bundle Runner.app/Frameworks/StreamProxy.framework does not support the minimum OS Version specified in the Info.plist.

90208: Invalid Bundle. The bundle Runner.app/Frameworks/GemmaModelConstraintProvider.framework does not support the minimum OS Version specified in the Info.plist.

Environment

flutter_gemma

flutter_gemma: 0.15.3

Flutter

flutter --version

Output:

Flutter 3.41.0
Dart 3.10.x

Xcode

xcodebuild -version

Output:

Xcode 26.3
Build version 17C529

iOS Configuration

Podfile

# Uncomment this line to define a global platform for your project
platform :ios, '16.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

project 'Runner', {
  'Debug' => :debug,
  'Profile' => :release,
  'Release' => :release,
}

def flutter_root
  generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
  unless File.exist?(generated_xcode_build_settings_path)
    raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
  end

  File.foreach(generated_xcode_build_settings_path) do |line|
    matches = line.match(/FLUTTER_ROOT\=(.*)/)
    return matches[1].strip if matches
  end
  raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end

require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)

flutter_ios_podfile_setup

target 'Runner' do
  use_frameworks! :linkage => :static
  use_modular_headers!

  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
  target 'RunnerTests' do
    inherit! :search_paths
  end
end

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['IPHONEOS_DEPLOYMENT_TARGET'] = '16.0'

      # REQUIRED FOR APPLE SILICON + TFLITE
      config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
      
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
        '$(inherited)',
        'PERMISSION_MICROPHONE=1',                # Microphone
        'PERMISSION_SPEECH_RECOGNIZER=1',         # Speech recognition
        'PERMISSION_BLUETOOTH=1',                 # Bluetooth
        'PERMISSION_PHOTOS=1',                    # Photos
        'PERMISSION_CAMERA=1',                    # Camera
        'PERMISSION_LOCATION=1',                  # Location
      ]

      # IMPORTANT FOR GEMMA / LLAMA / METAL
      config.build_settings['ENABLE_BITCODE'] = 'NO'

      # Reduce random threading issues
      config.build_settings['DEAD_CODE_STRIPPING'] = 'YES'

      # GENERATE DSYM
      config.build_settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf-with-dsym'

      # GENERATE DEBUG SYMBOLS
      config.build_settings['GENERATE_DEBUG_SYMBOLS'] = 'YES'

      # BETTER DISTRIBUTION SUPPORT
      config.build_settings['BUILD_LIBRARY_FOR_DISTRIBUTION'] = 'YES'
    end
  end
end

What I Already Tried

  • Set iOS deployment target to 16.0 everywhere
  • Clean build
  • flutter clean
  • Remove Pods
  • Remove Podfile.lock
  • Run pod install --repo-update
  • Rebuild IPA
  • Archive again from Xcode
  • Verified Runner deployment target
  • Verified framework deployment targets
  • Disabled bitcode
  • Reinstalled CocoaPods

Framework Inspection

I extracted the IPA and inspected framework deployment targets using:

find . -name "*.framework" -exec sh -c '
BIN=$(basename "{}" .framework)
echo "\n===== $BIN ====="
otool -l "{}/$BIN" | grep minos -A 2
' \;

Output:

===== LiteRtMetalAccelerator =====
minos 14.0
sdk 26.2

===== StreamProxy =====
minos 16.0
sdk 18.5

===== GemmaModelConstraintProvider =====
minos 16.0
sdk 26.2

Observation

Some bundled frameworks appear to be compiled using SDK 26.2, and App Store Connect rejects the archive during validation.

I suspect this may be related to:

  • SDK/toolchain compatibility
  • framework packaging
  • deployment target metadata mismatch
  • Xcode 26.x compatibility

Questions

  • Is flutter_gemma officially compatible with Xcode 26.x and iOS SDK 26.x?
  • Has anyone successfully submitted an App Store build using this setup?
  • Is there a recommended Xcode version for iOS release builds?
  • Is there any workaround for App Store validation rejection?

Any help would be appreciated. Thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions