Xcode build Error : 'UnityFramework/UnityFramework.h' file not found

When I am trying to build the Xcode project, it is saying that my main.mm can not find the UnityFramework.h file. Which I checked is not missing in the Project. Can anyone give me some advice on what to do?

2 Likes

I have the same error. Not sure what to do.

This is known issue with Helpshift plugin (and with all plugins that use OLD mod_pbxproj). You can fix this by modifying mod_pbxproj.py file by adding ('PBXHeadersBuildPhase', True), to line 1349 (or near it, depending about the mod_pbxproj version)

2 Likes

Hello everyone,

I don’t have any mod_pbxproj.py in my project, so I have to update the main.mm manually. Is there any other way to change that ? (I just update the path so!)

Thank you !

You can create post process script that modifies the file manually. Something like

    [PostProcessBuild]
    public static void ChangeXcodePlist(BuildTarget buildTarget, string path)
    {
        if (buildTarget == BuildTarget.iOS)
        {
            // Ugly fix for missing UnityFramework.h Xcode issue
            string mainAppPath = Path.Combine(path, "MainApp", "main.mm");
            string mainContent = File.ReadAllText(mainAppPath);
            UnityEngine.Debug.Log(mainContent);
            string newContent = mainContent.Replace("#include <UnityFramework/UnityFramework.h>", @"#include ""../UnityFramework/UnityFramework.h""");
            File.WriteAllText(mainAppPath, newContent)
         }
}
6 Likes

Hello Kaarloew !
Thanks for the reply :).

I don’t have access to my mac OS machine, but I’m totally going to do that! I started modifying the file by hand and I was close the getting it to work!

Thank you for your help!

Hello @kaarloew where I can read more info how to implement such script in my unity project ? I mean is it just writing script and then I run build in Unity ?

Yes. You can read more about the PostProcessBuild in Unity - Scripting API: PostProcessBuildAttribute

1 Like

I have the same error. It started after I cleaned the project in xcode. I have spent all day on that error please help!!! :slight_smile:

Ok I finally got it! You can change the code in main.mm by hand. I changed it from <UnityFramwork/UnityFramwork.h> To “…/UnityFramwork/UnityFramwork.h”

4 Likes

Dude, its framework not framwork - #include "../UnityFramework/UnityFramework.h"

1 Like

Dude, UnityFramwork for days.

This worked for me!! After 9-10 hours of searching for a solution to this error: ‘defines.h’ file not found
Probably will use the post process script for new builds, but changing the main.mm file in xcode was simple enough to test it.

1 Like

I can’t explain exactly why this happened, nor why my solution worked, but I found that in my Products folder, there were multiple folders. One was “ReleaseForRunning-iphoneos” - that’s the one from which Xcode was building. That one didn’t contain the UnityFramework folder, but another - “ReleaseForRunning-iphonesimulator” did. I copied that folder over (it’s all for the same app after all, right?) and the build succeeded.

After fiddling with this same problem for an hour or two, I solved by just clearing the build folder. :eyes:

where is this file located?

After fixing this issue I have another issue with unityappcontroller.h file is not found.

i am getting this error while include this →
#include <UnityFramework/UnityFramework.h>

Error ->UnityFramework/UnityFramework.h’ file not found…

Please Help me out

A recent version of Unity (2022.3.18 onwards) broke IOS builds if using IOS Project Builder. Also broken in the current Unity version. I am posting the error below (for anyone searching the internet for a solution to this problem) and the fix below that.

In file included from .\MainApp\main.mm:1:
.\UnityFramework/UnityFramework.h(4,9): fatal error: ‘UnityFramework/UnityAppController.h’ file not found
#import <UnityFramework/UnityAppController.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

  • [arm64] Linking …
    ld64.lld: error: cannot open build/Release-iphoneos/iPhone-target/arm64/./MainApp/main.mm.obj: no such file or directory
    ld64.lld: error: undefined symbol: main

To fix, add this code in a file like Editor/PostProcessBuildClass.cs:

static class PostProcessBuildClass {
  [PostProcessBuild]
  public static void ChangeXcodePlist(BuildTarget buildTarget, string path) {
    Debug.Log("Post process build ChangeXcodePlist");
    if (buildTarget == BuildTarget.iOS) {
      string mainAppPath = Path.Combine(path, "UnityFramework", "UnityFramework.h");
      string mainContent = File.ReadAllText(mainAppPath);
      string newContent = mainContent.Replace("#import <UnityFramework/UnityAppController.h>", "#import <Classes/UnityAppController.h>");
      File.WriteAllText(mainAppPath, newContent);
    }
  }
}
4 Likes

I’m my scenario, for some reason using Unity 2022.3.20f1 I had to ad both patches.
The main.mm and UnityFramework.h

1 Like