Cannot get Flutter app to build - no such module 'heresdk'

Viewed 2971

I was following instructions from https://developer.here.com/documentation/flutter-sdk-navigate/4.4.0.2/dev_guide/topics/quick-start.html#try-the-example-apps both for trying example apps or creating a new project. Neither seems to work. Running fails with the following errors:

Klamath:hello_map_app mathias$ flutter run
Launching lib/main.dart on iPhone 12 in debug mode...
Running pod install...                                           1,603ms
Running Xcode build...
Xcode build done.                                            6.3s
Failed to build iOS app
Error output from Xcode build:
↳
    ** BUILD FAILED **


Xcode's output:
↳
    warning: [CP] Unable to find matching .xcframework slice in
    '/Users/mathias/Downloads/heresdk-explore-flutter-4.9.0.0.2063/heresdk-explore-flutter-examples-4.9.0.0/hello_map_app/ios/Pods/../.symlinks/plugins/here_sdk/ios/
    Frameworks/heresdk.xcframework heresdk framework ios-x86_64-simulator ios-arm64' for the current build architectures (arm64 x86_64).
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    Command CompileSwift failed with a nonzero exit code
    /Users/mathias/Downloads/heresdk-explore-flutter-4.9.0.0.2063/heresdk-explore-flutter-examples-4.9.0.0/hello_map_app/plugins/here_sdk/ios/Classes/MapController.s
    wift:14:8: error: no such module 'heresdk'
    import heresdk
           ^
    /Users/mathias/Downloads/heresdk-explore-flutter-4.9.0.0.2063/heresdk-explore-flutter-examples-4.9.0.0/hello_map_app/plugins/here_sdk/ios/Classes/MapController.s
    wift:14:8: error: no such module 'heresdk'
    import heresdk
           ^
    /Users/mathias/Downloads/heresdk-explore-flutter-4.9.0.0.2063/heresdk-explore-flutter-examples-4.9.0.0/hello_map_app/plugins/here_sdk/ios/Classes/MapController.s
    wift:14:8: error: no such module 'heresdk'
    import heresdk
           ^
    note: Using new build system
    note: Building targets in parallel
    note: Planning build
    note: Constructing build description

Could not build the application for the simulator.
Error launching application on iPhone 12.

I noticed that no Podfile is generated for the iOS plugin, contrary to what the docs say:

After you have executed flutter pub get (or clicked the respective Packages get button in Android Studio or any other IDE), a new Podfile is created for iOS

Flutter doc:

[✓] Flutter (Channel stable, 2.5.2, on Mac OS X 10.15.7 19H1419 darwin-x64, locale en-GB)
    • Flutter version 2.5.2 at /Users/mathias/dev/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 3595343e20 (4 days ago), 2021-09-30 12:58:18 -0700
    • Engine revision 6ac856380f
    • Dart version 2.14.3

[!] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/mathias/Library/Android/sdk
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for more details.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.2, Build version 12B45b
    • CocoaPods version 1.10.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 3.5)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)

[✓] IntelliJ IDEA Ultimate Edition (version 2021.2.2)
    • IntelliJ at /Users/mathias/Applications/JetBrains Toolbox/IntelliJ IDEA Ultimate.app
    • Flutter plugin version 61.0.4
    • Dart plugin version 212.5486

[✓] IntelliJ IDEA Ultimate Edition (version 2021.2.2)
    • IntelliJ at /Users/mathias/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/212.5284.40/IntelliJ IDEA.app
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart

[✓] IntelliJ IDEA Ultimate Edition (version 2021.1.1)
    • IntelliJ at /Users/mathias/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/211.7142.45/IntelliJ IDEA.app
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart

[✓] VS Code (version 1.59.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.25.0

[✓] Connected device (2 available)
    • iPhone 12 (mobile) • D8D4529E-FC01-48BA-A640-451B829D6BF9 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-2 (simulator)
    • Chrome (web)       • chrome                               • web-javascript • Google Chrome 94.0.4606.71

! Doctor found issues in 1 category.
Process finished with exit code 0

Any idea what could be the problem?

2 Answers

This happens because your Xcode version is too old and not supported. According to the minimum requirements, at least Xcode 12.4 is required. Your version is 12.2.

On top the HERE SDK does not yet officially support Flutter 2.5. Running on a device is not affected, this happens only on simulators. As a workaround, modify the post_install task in the generated Podfile:

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['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64' if `uname -m` == "x86_64\n"
        end

  end
  installer.generated_projects.each do |project|
    project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.4'
        end
    end
    project.build_configurations.each do |config|
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.4'
    end
end

I took this from the release notes for the latest 4.9.0.0 release.

UPDATE: For versions >= 4.9.2.0, the above is no longer necessary, as the HERE SDK now officially supports arm64 for simulators and Flutter 2.5.

Add this in bottom of your podfile and install pods

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
    end
  end
end
Related