Flutter on M1: GoogleMapsBase & Flutter.h not found errors after moving to mac from windows

663

After spending literal days on this problem I "fixed" it but not in a way I'm proud of but it may work for someone facing the same issue.

What caused it

I initially started the development on a Windows machine and then moved to an M1 Mac mini in order to test the app on the iOS simulator. I was prompted to install cocoa pods and then do a pod install. Sadly, when I run pod install, I was met with an error about an incompatible pod version and I panicked leading to me canceling the process. I then started trying out different solutions that I found here on StackOverflow but that only made things worse. These changes simply made me lose track of what the original issue was and thus, I didn't manage to recover from the mess. After applying the steps outlined below, I found out that the initial culprit was me not running a simple pod update command after the `pod install` one failed with the error mentioned below.

Solution

Here are the steps I followed to correct this issue:
  1. Created a new flutter project
  2. Copied the android & lib folders (since they weren't causing any issues) and also the pubspec.yml and .lock files.
  3. Then, I copied the firebase-related files into the ios directory along with the SwiftDelegate since I made some changes in order to support google maps.
  4. Once that was done, all I had to do was run pod install and when inevitably the pod dependency version issue arose, I simply run pod update and that fixed any issues I had with the pods.
  5. Final step was to exclude the arm64 architecture from BOTH the Runner target and the Pods target and change the minimum ios version to 9.

That's it, once those things were done everything worked just fine.

Summary

To conclude, if you like me face a similar issue with pods on your first ever macOS experience, don't panick, update your pods and then you should be fine.

Share:
663
Stelios Papamichail
Author by

Stelios Papamichail

Computer Science undergrad at the University of Crete & passionate Software developer.

Updated on January 01, 2023

Comments

  • Stelios Papamichail
    Stelios Papamichail over 1 year

    I've been developing a flutter app on my windows machine for a while now and recently switched to a mac mini with an M1 chip. The app uses google maps but when I try to run it on an iOS device I get the following error:

    Launching lib/main.dart on iPhone 13 Pro Max in debug mode...
    Xcode build done.                                           72.1s
    Failed to build iOS app
    Error output from Xcode build:
    ↳
        --- xcodebuild: WARNING: Using the first of multiple matching destinations:
        { platform:iOS Simulator, id:dvtdevice-DVTiOSDeviceSimulatorPlaceholder-iphonesimulator:placeholder, name:Any iOS Simulator Device }
        { platform:iOS Simulator, id:1BBC3B77-3A9D-4F09-892A-34C7059C2430, OS:15.0, name:iPad (9th generation) }
        { platform:iOS Simulator, id:BD58EEBD-CC57-418D-B33A-B381EB89E4BE, OS:15.0, name:iPad Air (4th generation) }
        { platform:iOS Simulator, id:01C2C865-7ED0-4B1E-B391-6546DE9FA12B, OS:15.0, name:iPad Pro (9.7-inch) }
        { platform:iOS Simulator, id:C0F1BFE8-AC98-487F-8AD2-7A7821D0B1BF, OS:15.0, name:iPad Pro (11-inch) (3rd generation) }
        { platform:iOS Simulator, id:A9E3236E-DC77-44FD-A18E-8F0326A8D1B1, OS:15.0, name:iPad Pro (12.9-inch) (5th generation) }
        { platform:iOS Simulator, id:FC86621E-900F-4D94-B709-592D19CCF5C1, OS:15.0, name:iPad mini (6th generation) }
        { platform:iOS Simulator, id:DF9C52D5-29AE-4048-9EC4-D801ABED90AF, OS:15.0, name:iPhone 8 }
        { platform:iOS Simulator, id:905D86FA-A373-4DC5-8761-9F20D9573F7E, OS:15.0, name:iPhone 8 Plus }
        { platform:iOS Simulator, id:FF07BF67-7EB0-4050-98F5-90937B55C083, OS:15.0, name:iPhone 11 }
        { platform:iOS Simulator, id:1ADD94F5-AFA9-489A-933B-7A01C29A1F80, OS:15.0, name:iPhone 11 Pro }
        { platform:iOS Simulator, id:F5120FD7-77DE-4BE7-AE09-075A7D08DE80, OS:15.0, name:iPhone 11 Pro Max }
        { platform:iOS Simulator, id:3198F3B5-25EC-41F9-8A0E-801F17325095, OS:15.0, name:iPhone 12 }
        { platform:iOS Simulator, id:5BABC83A-DB25-4040-AB2E-65DFC204D8E2, OS:15.0, name:iPhone 12 Pro }
        { platform:iOS Simulator, id:63451408-2F20-4B65-8E05-570CAA3AAA97, OS:15.0, name:iPhone 12 Pro Max }
        { platform:iOS Simulator, id:54E2E527-C85D-47F5-ADDE-BA4CF861BE9A, OS:15.0, name:iPhone 12 mini }
        { platform:iOS Simulator, id:ADD48A2B-3DF4-432E-8561-D566DB2E6FB4, OS:15.0, name:iPhone 13 }
        { platform:iOS Simulator, id:91162948-B850-494D-A496-E73DBCBC89B4, OS:15.0, name:iPhone 13 Pro }
        { platform:iOS Simulator, id:9EA1FC3C-1D81-4B6A-8E03-16D634FD64A7, OS:15.0, name:iPhone 13 Pro Max }
        { platform:iOS Simulator, id:01F0486F-D6B3-4BFF-88AD-5D151293F6A9, OS:15.0, name:iPhone 13 mini }
        { platform:iOS Simulator, id:BA8A8DF2-519A-4AD1-BED3-F4BCC0DAD591, OS:15.0, name:iPhone SE (2nd generation) }
        { platform:iOS Simulator, id:7322D286-C468-4FE7-9B82-929CB072CA59, OS:15.0, name:iPod touch (7th generation) }
        { platform:macOS, arch:arm64, variant:Designed for [iPad,iPhone], id:00008103-001148C13679001E }
        { platform:iOS, id:dvtdevice-DVTiPhonePlaceholder-iphoneos:placeholder, name:Any iOS Device }
        ** BUILD FAILED **
    Xcode's output:
    ↳
        ld: building for iOS Simulator, but linking in object file built for iOS, file '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/ios/Pods/GoogleMaps/Base/Frameworks/GoogleMapsBase.framework/GoogleMapsBase' for architecture arm64
        clang: error: linker command failed with exit code 1 (use -v to see invocation)
        note: Using new build system
        note: Planning
        note: Build preparation complete
        note: Building targets in parallel
        note: Removed stale file '/Users/steliospapamichail/Library/Developer/Xcode/DerivedData/Runner-czjbhkfeqllyfpfkhbtzrnpkcvgk/Build/Intermediates.noindex/Runner.build/Debug-iphonesimulator/Runner.build/Script-BAB43F53538FCAAA1B752783.sh'
        note: Removed stale file '/Users/steliospapamichail/Library/Developer/Xcode/DerivedData/Runner-czjbhkfeqllyfpfkhbtzrnpkcvgk/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/PromisesObjC.build/Script-023FA270521F1C5E3ED8F5839885EEA7.sh'
        note: Removed stale file '/Users/steliospapamichail/Library/Developer/Xcode/DerivedData/Runner-czjbhkfeqllyfpfkhbtzrnpkcvgk/Build/Products/Debug-iphonesimulator/google_maps_flutter/google_maps_flutter.framework'
        /Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/ios/Pods/Pods.xcodeproj: warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 15.0.99. (in target 'leveldb-library' from project 'Pods')
        /Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/ios/Pods/Pods.xcodeproj: warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 15.0.99. (in target 'FMDB' from project 'Pods')
    Could not build the application for the simulator.
    Error launching application on iPhone 13 Pro Max.
    Exited (sigterm)
    

    Does the error mean that my installation of google maps isn't compatible with my M1 chip? If that's the case, what can I do to bypass it?

    Update: After trying the solution proposed in the link the commenter added below, I get an error regarding googlemaps.h that I've also gotten in the past. Here is the log:

    Launching lib/main.dart on iPhone 13 Pro Max in debug mode...
    Xcode build done.                                           11.3s
    Failed to build iOS app
    Error output from Xcode build:
    ↳
        --- xcodebuild: WARNING: Using the first of multiple matching destinations:
        { platform:iOS Simulator, id:dvtdevice-DVTiOSDeviceSimulatorPlaceholder-iphonesimulator:placeholder, name:Any iOS Simulator Device }
        { platform:iOS Simulator, id:1BBC3B77-3A9D-4F09-892A-34C7059C2430, OS:15.0, name:iPad (9th generation) }
        { platform:iOS Simulator, id:BD58EEBD-CC57-418D-B33A-B381EB89E4BE, OS:15.0, name:iPad Air (4th generation) }
        { platform:iOS Simulator, id:01C2C865-7ED0-4B1E-B391-6546DE9FA12B, OS:15.0, name:iPad Pro (9.7-inch) }
        { platform:iOS Simulator, id:C0F1BFE8-AC98-487F-8AD2-7A7821D0B1BF, OS:15.0, name:iPad Pro (11-inch) (3rd generation) }
        { platform:iOS Simulator, id:A9E3236E-DC77-44FD-A18E-8F0326A8D1B1, OS:15.0, name:iPad Pro (12.9-inch) (5th generation) }
        { platform:iOS Simulator, id:FC86621E-900F-4D94-B709-592D19CCF5C1, OS:15.0, name:iPad mini (6th generation) }
        { platform:iOS Simulator, id:DF9C52D5-29AE-4048-9EC4-D801ABED90AF, OS:15.0, name:iPhone 8 }
        { platform:iOS Simulator, id:905D86FA-A373-4DC5-8761-9F20D9573F7E, OS:15.0, name:iPhone 8 Plus }
        { platform:iOS Simulator, id:FF07BF67-7EB0-4050-98F5-90937B55C083, OS:15.0, name:iPhone 11 }
        { platform:iOS Simulator, id:1ADD94F5-AFA9-489A-933B-7A01C29A1F80, OS:15.0, name:iPhone 11 Pro }
        { platform:iOS Simulator, id:F5120FD7-77DE-4BE7-AE09-075A7D08DE80, OS:15.0, name:iPhone 11 Pro Max }
        { platform:iOS Simulator, id:3198F3B5-25EC-41F9-8A0E-801F17325095, OS:15.0, name:iPhone 12 }
        { platform:iOS Simulator, id:5BABC83A-DB25-4040-AB2E-65DFC204D8E2, OS:15.0, name:iPhone 12 Pro }
        { platform:iOS Simulator, id:63451408-2F20-4B65-8E05-570CAA3AAA97, OS:15.0, name:iPhone 12 Pro Max }
        { platform:iOS Simulator, id:54E2E527-C85D-47F5-ADDE-BA4CF861BE9A, OS:15.0, name:iPhone 12 mini }
        { platform:iOS Simulator, id:ADD48A2B-3DF4-432E-8561-D566DB2E6FB4, OS:15.0, name:iPhone 13 }
        { platform:iOS Simulator, id:91162948-B850-494D-A496-E73DBCBC89B4, OS:15.0, name:iPhone 13 Pro }
        { platform:iOS Simulator, id:9EA1FC3C-1D81-4B6A-8E03-16D634FD64A7, OS:15.0, name:iPhone 13 Pro Max }
        { platform:iOS Simulator, id:01F0486F-D6B3-4BFF-88AD-5D151293F6A9, OS:15.0, name:iPhone 13 mini }
        { platform:iOS Simulator, id:BA8A8DF2-519A-4AD1-BED3-F4BCC0DAD591, OS:15.0, name:iPhone SE (2nd generation) }
        { platform:iOS Simulator, id:7322D286-C468-4FE7-9B82-929CB072CA59, OS:15.0, name:iPod touch (7th generation) }
        { platform:macOS, arch:arm64, variant:Designed for [iPad,iPhone], id:00008103-001148C13679001E }
        { platform:iOS, id:dvtdevice-DVTiPhonePlaceholder-iphoneos:placeholder, name:Any iOS Device }
        ** BUILD FAILED **
    Xcode's output:
    ↳
    In file included from /Users/steliospapamichail/development/flutter/.pub-cache/hosted/pub.dartlang.org/google_maps_flutter-2.0.11/ios/Classes/JsonConversions.m:5:
    /Users/steliospapamichail/development/flutter/.pub-cache/hosted/pub.dartlang.org/google_maps_flutter-2.0.11/ios/Classes/JsonConversions.h:6:9: fatal error: 'GoogleMaps/GoogleMaps.h' file not found
        #import <GoogleMaps/GoogleMaps.h>
                ^~~~~~~~~~~~~~~~~~~~~~~~~
        1 error generated.
        note: Using new build system
        note: Planning
        note: Build preparation complete
        note: Building targets in parallel
        note: Removed stale file '/Users/steliospapamichail/Library/Developer/Xcode/DerivedData/Runner-czjbhkfeqllyfpfkhbtzrnpkcvgk/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/PromisesObjC.build/Script-E551D73C516C8F1E426DC570FE93233F.sh'
        warning: Stale file '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/build/ios/Debug-iphonesimulator/Runner.app/Frameworks' is located outside of the allowed root paths.
        warning: Stale file '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/FBLPromises.framework' is located outside of the allowed root paths.
        warning: Stale file '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/FMDB.framework' is located outside of the allowed root paths.
        warning: Stale file '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/FirebaseAuth.framework' is located outside of the allowed root paths.
        warning: Stale file '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/FirebaseCore.framework' is located outside of the allowed root paths.
        warning: Stale file '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/FirebaseCoreDiagnostics.framework' is located outside of the allowed root paths.
        warning: Stale file '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/FirebaseDatabase.framework' is located outside of the allowed root paths.
        warning: Stale file '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/GTMSessionFetcher.framework' is located outside of the allowed root paths.
        warning: Stale file '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/GoogleDataTransport.framework' is located outside of the allowed root paths.
        warning: Stale file '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/GoogleUtilities.framework' is located outside of the allowed root paths.
        warning: Stale file '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/leveldb.framework' is located outside of the allowed root paths.
        warning: Stale file '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/nanopb.framework' is located outside of the allowed root paths.
        warning: Stale file '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/path_provider.framework' is located outside of the allowed root paths.
        warning: Stale file '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/share_plus.framework' is located outside of the allowed root paths.
        warning: Stale file '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/shared_preferences.framework' is located outside of the allowed root paths.
        warning: Stale file '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/sqflite.framework' is located outside of the allowed root paths.
        warning: Stale file '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/url_launcher.framework' is located outside of the allowed root paths.
        warning: Stale file '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/build/ios/Debug-iphonesimulator/Runner.app/GoogleMaps.bundle' is located outside of the allowed root paths.
        note: Removed stale file '/Users/steliospapamichail/Library/Developer/Xcode/DerivedData/Runner-czjbhkfeqllyfpfkhbtzrnpkcvgk/Build/Products/Debug-iphonesimulator/google_maps_flutter/google_maps_flutter.framework'
        /Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/ios/Pods/Pods.xcodeproj: warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 15.0.99. (in target 'FMDB' from project 'Pods')
        /Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/ios/Pods/Pods.xcodeproj: warning: The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0, but the range of supported deployment target versions is 9.0 to 15.0.99. (in target 'leveldb-library' from project 'Pods')
    Could not build the application for the simulator.
    Error launching application on iPhone 13 Pro Max.
    Exited (sigterm)
    

    Update 2: I realized that VSCode's terminal wasn't running in rosetta so when I was trying to do pod update or pod install I was met with a bunch of errors. Opening a separate terminal using rosetta and running these commands fixed the google maps error by doing pod update google_maps_flutter. The only issue that remains is that the Xcode project cannot find the flutter.framework directory and I can't find it either under the "Frameworks, libraries and embedded content" which then results in xcode's build failing. Here's the stack:

    Xcode's output:
    ↳
        /Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/ios/Runner/Runner-Bridging-Header.h:1:9:
        note: in file included from /Users/steliospapamichail/Dropbox/Freelancing/Flutter
        Projects/JustPlay/just_play/ios/Runner/Runner-Bridging-Header.h:1:
        #import "GeneratedPluginRegistrant.h"
                ^
        /Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/ios/Runner/GeneratedPluginRegistrant.h:10:9:
        error: 'Flutter/Flutter.h' file not found
        #import <Flutter/Flutter.h>
                ^
        1 error generated.
        <unknown>:0: error: failed to emit precompiled header
        '/Users/steliospapamichail/Library/Developer/Xcode/DerivedData/Runner-czjbhkfeqllyfpfkhbtzrnpkcvgk/Build/Intermediates.noindex
        /PrecompiledHeaders/Runner-Bridging-Header-swift_MU0M9NUV63KT-clang_15TXGWK3O5BI2.pch' for bridging header
        '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/ios/Runner/Runner-Bridging-Header.h'
        /Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/ios/Runner/Runner-Bridging-Header.h:1:9:
        note: in file included from /Users/steliospapamichail/Dropbox/Freelancing/Flutter
        Projects/JustPlay/just_play/ios/Runner/Runner-Bridging-Header.h:1:
        #import "GeneratedPluginRegistrant.h"
                ^
        2 errors generated.
        error: generate-pch command failed with exit code 1 (use -v to see invocation)
        error: generate-pch command failed with exit code 1 (use -v to see invocation)
        /Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/ios/Runner/Runner-Bridging-Header.h:1:9:
        note: in file included from /Users/steliospapamichail/Dropbox/Freelancing/Flutter
        Projects/JustPlay/just_play/ios/Runner/Runner-Bridging-Header.h:1:
        #import "GeneratedPluginRegistrant.h"
                ^
        /Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/ios/Runner/GeneratedPluginRegistrant.h:10:9:
        error: 'Flutter/Flutter.h' file not found
        #import <Flutter/Flutter.h>
                ^
        1 error generated.
        <unknown>:0: error: failed to emit precompiled header
        '/Users/steliospapamichail/Library/Developer/Xcode/DerivedData/Runner-czjbhkfeqllyfpfkhbtzrnpkcvgk/Build/Intermediates.noindex
        /PrecompiledHeaders/Runner-Bridging-Header-swift_20I7K2PWHDC7X-clang_2NM9DJHUIVDYE.pch' for bridging header
        '/Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/ios/Runner/Runner-Bridging-Header.h'
        /Users/steliospapamichail/Dropbox/Freelancing/Flutter Projects/JustPlay/just_play/ios/Runner/Runner-Bridging-Header.h:1:9:
        note: in file included from /Users/steliospapamichail/Dropbox/Freelancing/Flutter
        Projects/JustPlay/just_play/ios/Runner/Runner-Bridging-Header.h:1:
        #import "GeneratedPluginRegistrant.h"
                ^
        2 errors generated.