Skip to content

Supporting legacy platforms

KyleWong edited this page Jan 15, 2019 · 4 revisions

Building ARMv7 (iOS) & armeabi v7a (Android) with Xcode10

In Xcode10, the i386 architecture is deprecated for macOS, so building the Flutter engine for armv7/armeabi-v7a fails. Specifically, libraries like CoreFoundation contain only code for the x86_64 architecture.

iOS ARMv7

Android armeabi-v7a

To address this, get the MacOS 10.13 SDK from Xcode 9.x from Apple, and extract the SDK components from the .xip file. Uncompress the SDK into /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs and name the SDK MacOSX10.13.sdk:

Uncompressed SDK in Xcode10

To check if the logic is fine, run command below:

python your-flutter-engine-path/engine/src/build/mac/find_sdk.py 10.12

When find_sdk.py return 10.13, the ninja build will succeed for gen_snapshot (i386), Flutter.framework (ARMv7) and libflutter.so (armeabi-v7a).

Build Flutter engine for 32bit iOS simulator on modern Mac(x86_64)

To build the Flutter engine for iOS simulator on a modern Mac(x86_64), the gn command will generate a target_cpu value with x64. Henceforth, the Flutter.framework and gen_snapshot will be x86_64. However, sometimes you may want to develop Flutter on a 32bit simulator(like iPhone5), you will need both Flutter.framework and gen_snapshot to be i386.

Follow instruction below to change the default behavior in gn command:

  1. Edit your-flutter-engine-path/engine/src/flutter/tools/gn Edit gn
Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.