Open BikalBinodAdhikari opened 3 weeks ago
I have not tried exporting to Flutter yet, so I have not checked if OpenCVForUnity works with Flutter.
can you look into the issue please.. it is very frustrating as my client needs the app as soon as possible. also this might help OpenCV to work in other platforms as well.
What tools do you use to export from Unity projects to Flutter projects?
fuw.unitypackage
I added “/ios/UnityLibrary/Frameworks/OpenCVForUnity/Plugins/iOS/devices/opencv2.framework” as instructed in the official documentation and it worked fine.
https://github.com/juicycleff/flutter-unity-view-widget/tree/master?tab=readme-ov-file
Unity plugins that make use of native code (Vuforia, openCV, etc.) might need to be added to Runner like UnityFramework. Check the contents of the /ios/UnityLibrary/Frameworks/ directory. Any
.framework located in (subdirectories of) this directory is a framework that you can add to Runner.
Still after building from flutter and using it here... it is saying I'm using macOS Sonoma and Xcode latest in Intel Macbook Pro.. I've followed and done everything
ld: framework 'opencv2' not found clang: error: linker command failed with exit code 1 (use -v to see invocation)
and below is my code of OpenCVForUnityIOSBuildPostprocessor.cs
using UnityEngine; using UnityEditor; using UnityEditor.Callbacks; using UnityEditor.iOS.Xcode; using System.IO; using System.Linq;
namespace OpenCVForUnity { public class OpenCVForUnityIOSBuildPostprocessor : MonoBehaviour { [PostProcessBuild] public static void OnPostprocessBuild(BuildTarget buildTarget, string path) { if (buildTarget == BuildTarget.iOS) { // Simplified framework path handling string opencvFrameworkPath = Directory.GetDirectories(path, "opencv2.framework", SearchOption.AllDirectories).FirstOrDefault(); if (string.IsNullOrEmpty(opencvFrameworkPath)) throw new System.Exception("Can't find opencv2.framework");
// Set the OpenCV framework to Embedded Binaries and add the framework search path
string projPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj";
string projPath = PBXProject.GetPBXProjectPath(path);
PBXProject proj = new PBXProject();
proj.ReadFromString(System.IO.File.ReadAllText(projPath));
// Use the new methods for getting the target GUID
string target = proj.GetUnityMainTargetGuid(); // For app target
string target = proj.GetUnityFrameworkTargetGuid(); // For source/plugins target
string target = proj.TargetGuidByName("Unity-iPhone");
// Add framework search paths
proj.AddBuildProperty(target, "FRAMEWORK_SEARCH_PATHS", "$(PROJECT_DIR)/Frameworks/OpenCVForUnity/Plugins/iOS");
File.WriteAllText(projPath, proj.WriteToString());
// Check if the Target minimum iOS Version is set to 9.0 or higher
string targetVersion = PlayerSettings.iOS.targetOSVersionString;
int versionNumber;
if (int.TryParse(targetVersion.Split('.')[0], out versionNumber) && versionNumber < 9)
{
if ((int)PlayerSettings.iOS.targetOSVersion < (int)iOSTargetOSVersion.iOS_9_0)
{
UnityEngine.Debug.LogError("Please set Target minimum iOS Version to 9.0 or higher.");
}
}
}
}
}
I have successfully built in the following environment. Unity version : 2022.3.21f1 Xcode version : 14.2 OpenCVForUnity version : 2.6.2 flutter version : 3.24.1
I followed the instructions in the Unity project setup on the official site to export the Xcode project, then manually added opencv2.framework to the Xcode project. I then ran the “flutter run” command to build the flutter application.
Also, OpenCVForUnityIOSBuildPostprocessor.cs is only called for Unity's normal build process. If you export your Xcode project with this flutter_unity_widget, you will need to manually add opencv2.framework.
While building it from Mac and unity project exported as flutterios I'm getting this kind of error.. I have added opencv2.framework but still it says not found. Can anyone help!! this happened in Mac also in unity I have error after exporting.