gkngkc / UnityStandaloneFileBrowser

A native file browser for unity standalone platforms
MIT License
2.01k stars 317 forks source link

Unity 2017 support #17

Open Aleana27 opened 6 years ago

Aleana27 commented 6 years ago

Unity version: Unity_2017.1.0f3

Hallo, I integrated the UnityStandaloneFileBrowser with the Unity version 5.5.1f1 to build an application for MacOS. The file browser was working perfectly fine in the Unity editor and in the app. Thank you for your amazing work.

But now I need to update to the new Unity 2017 version. When I tried to open the FileBrowser in the Editor (and in the app) I get the following message: Couldn’t open Assets/Plugins/StandaloneFileBrowser.bundle/Contents/MacOS/StandaloneFileBrowser, error: dlopen(Assets/Plugins/StandaloneFileBrowser.bundle/Contents/MacOS/StandaloneFileBrowser, 2): Library not loaded: @executable_path/…/Frameworks/MonoEmbedRuntime/osx/libmono.0.dylib

Apparently Unity changed the folder @executable_path/../Frameworks/MonoEmbedRuntime/osx/libmono.0.dylib to @executable_path/../Frameworks/Mono/MonoEmbedRuntime/osx/libmono.0.dylib which is causing a linking issue as described here: https://github.com/gree/unity-webview/issues/219#issuecomment-315760749 

I managed that the plugin can access the library so that the file browser opens. But as soon as I click on Cancel or Open in the file browser, Unity crashes. The same is happening for the actual application.

Do you know how to fix this issue?

Greetings, Aleana27

XPav commented 6 years ago

I too just ran into this. Any workarounds?

gkngkc commented 6 years ago

Hi,

This error was occurring on async branch. I moved async calls to master and converted "UnitySendMessage" implementation to a simple callback.

Now, if you can use the package from master branch, async calls should work on both Unity 2017 and Unity 5

XPav commented 6 years ago

I've also noticed that passing a null string in any of the parameters will cause the hard crash on Mac.

gkngkc commented 6 years ago

@XPav Ok thanks, I added null checks to mac plugin code.

liumingzw commented 6 years ago

Thanks for your project. It works perfectly !

smart09091 commented 6 years ago

I tried to make a build of the test scene and it throws this error

ArgumentException: The Assembly System.Drawing is referenced by System.Windows.Forms ('Assets/Plugins/StandaloneFileBrowser/Plugins/System.Windows.Forms.dll'). But the dll is not allowed to be included or could not be found. UnityEditor.AssemblyHelper.AddReferencedAssembliesRecurse (System.String assemblyPath, System.Collections.Generic.List1 alreadyFoundAssemblies, System.String[] allAssemblyPaths, System.String[] foldersToSearch, System.Collections.Generic.Dictionary2 cache, BuildTarget target) (at C:/buildslave/unity/build/Editor/Mono/AssemblyHelper.cs:142) UnityEditor.AssemblyHelper.AddReferencedAssembliesRecurse (System.String assemblyPath, System.Collections.Generic.List1 alreadyFoundAssemblies, System.String[] allAssemblyPaths, System.String[] foldersToSearch, System.Collections.Generic.Dictionary2 cache, BuildTarget target) (at C:/buildslave/unity/build/Editor/Mono/AssemblyHelper.cs:148) UnityEditor.AssemblyHelper.AddReferencedAssembliesRecurse (System.String assemblyPath, System.Collections.Generic.List1 alreadyFoundAssemblies, System.String[] allAssemblyPaths, System.String[] foldersToSearch, System.Collections.Generic.Dictionary2 cache, BuildTarget target) (at C:/buildslave/unity/build/Editor/Mono/AssemblyHelper.cs:148) UnityEditor.AssemblyHelper.FindAssembliesReferencedBy (System.String[] paths, System.String[] foldersToSearch, BuildTarget target) (at C:/buildslave/unity/build/Editor/Mono/AssemblyHelper.cs:179) UnityEditor.HostView:OnGUI()

Im using unity 5.6.3p1 and when I try to run the build .exe an error message pops out saying There should be 'fileBrowserTestBuild_Data' folder next to the executable

gkngkc commented 6 years ago

Player Settings/Api Compatibility Level should be .NET 2.0. Doesn't work with Subset. Also check the plugin import settings, sometimes unity removes non core .NET dll's.

You can look this and this.