googlesamples / unity-jar-resolver

Unity plugin which resolves Android & iOS dependencies and performs version management
Other
1.21k stars 337 forks source link

[Bug] IOSResolver.dll tries to load on Windows/Linux - causes error #622

Open CJxD opened 1 year ago

CJxD commented 1 year ago

[REQUIRED] Please fill in the following fields:

[REQUIRED] Please describe the issue here:

  1. Import the .unitypackage into any project and run on Linux (or Windows)
  2. Note the following error in the console:
Assembly 'Assets/ExternalDependencyManager/Editor/1.2.176/Google.IOSResolver.dll' will not be loaded due to errors:
Unable to resolve reference 'UnityEditor.iOS.Extensions.Xcode'. Is the assembly missing or incompatible with the current platform?

Please answer the following, if applicable:

What's the issue repro rate? (eg 100%, 1/5 etc)

100%

What happened? How can we make the problem occur? This could be a description, log/console output, etc.

This is because this DLL can only be loaded on a Mac. I've fixed this manually for some time by changing the Platform Settings for that file from Any OS to macOS, which updates the meta and prevents issues.

I've put up with this for a while, but now one of my customers asked how to fix the error after importing External Dependency Manager. I think it should be like this by default to prevent confusion.

paulinon commented 1 year ago

Hi @CJxD,

Thanks for bringing this to our attention. This issue could be solved by making sure you have the iOS build support in your Unity version.

In terms of the change you're proposing, I can relay this to the team so we can see what they think. This sounds promising since it would prevent the error message from happening. You may refer to this thread for updates about your requested feature.

chkuang-g commented 1 year ago

I think what @CJxD suggested is a valid fix and should be quick enough to resolve by modifying the export configuration to something like the following

        {
        "importer": "PluginImporter",
        "platforms": [],
        "labels": ["gvhp_targets-editor"],
        "paths": [
            "ExternalDependencyManager/Editor/*/Google.IOSResolver.*"
        ],
        "override_metadata": {
          "PluginImporter": {
            "platformData": [ {
                "first" : {
                  "Editor": "Editor"
                },
                "second": {
                  "settings": {
                    "OS": "OSX"
                  }
                }
              }
            ]
          }
        },
        "override_metadata_upm": {
            "PluginImporter": {
            "platformData": [ {
                "first" : {
                    "Editor": "Editor"
                },
                "second": {
                    "enabled": 1,
                    "settings": {
                        "OS": "OSX"
                    }
                }
              }
            ]
            }
          }
        },

Let me see if this will have any impact to other functionality.

StephenHodgson commented 3 months ago

Still running into this problem

Weibye commented 2 months ago

This is duplicate of #412

The correct solution (by developers, not users) is to ensure the plugins are setup correctly for their intended platforms any OS -> mac