Description
[REQUIRED] Please fill in the following fields:
- Unity editor version:
2022.3.22
- External Dependency Manager version:
1.2.180
- Source you installed EDM4U:
.unitypackage
- Features in External Dependency Manager in use:
Android Resolver
- Plugins SDK in use:
Firebase, Facebook
- Platform you are using the Unity editor on:
Mac
[REQUIRED] Please describe the issue here:
(Please list the full steps to reproduce the issue. Include device logs, Unity logs, and stack traces if available.)
Packages that are are not in either the Packages
or Assets
folder generate an exception when attempting to copy .srcaar files into the local Maven repo. These are Packages referenced using local file paths as described in the Unity docs here. In our case our Firebase package lives in a folder parallel to Assets
so the manifest entry looks like:
"dependencies": {
"com.company.firebase.app": "file:../CompanyPackages/node_modules/com.company.firebase.app",
etc...
}
The exception happens in FileUtils.CreateFolder. Since an external folder path is sent into this method and it only checks to see if the folder exists in AssetDatabase
, it gets stuck in a recursive loop until path
is an empty string and new DirectoryInfo(path)
throws the following exception:
Job failed with exception: System.ArgumentException: The specified path is not of a legal form (empty).
at System.IO.Path.InsecureGetFullPath (System.String path) [0x00025] in <b904252b6b4e4277834bcca7e51f318d>:0
at System.IO.Path.GetFullPath (System.String path) [0x00000] in <b904252b6b4e4277834bcca7e51f318d>:0
at System.IO.DirectoryInfo..ctor (System.String path) [0x00006] in <b904252b6b4e4277834bcca7e51f318d>:0
at (wrapper remoting-invoke-with-check) System.IO.DirectoryInfo..ctor(string)
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x00010] in <35cc61ad4ecc44e4bdeaad3e377694d3>:0
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in <35cc61ad4ecc44e4bdeaad3e377694d3>:0
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in <35cc61ad4ecc44e4bdeaad3e377694d3>:0
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in <35cc61ad4ecc44e4bdeaad3e377694d3>:0
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in <35cc61ad4ecc44e4bdeaad3e377694d3>:0
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in <35cc61ad4ecc44e4bdeaad3e377694d3>:0
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in <35cc61ad4ecc44e4bdeaad3e377694d3>:0
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in <35cc61ad4ecc44e4bdeaad3e377694d3>:0
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in <35cc61ad4ecc44e4bdeaad3e377694d3>:0
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in <35cc61ad4ecc44e4bdeaad3e377694d3>:0
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in <35cc61ad4ecc44e4bdeaad3e377694d3>:0
at GooglePlayServices.PlayServicesResolver.CopyAssetAndLabel (System.String sourceLocation, System.String targetLocation, System.Boolean force) [0x0009b] in <bd68bc0fc2b34107a6e5a63d15643d80>:0
at GooglePlayServices.GradleTemplateResolver.CopySrcAars (System.Collections.Generic.ICollection`1[T] dependencies) [0x000be] in <bd68bc0fc2b34107a6e5a63d15643d80>:0
at GooglePlayServices.GradleTemplateResolver.InjectDependencies (System.Collections.Generic.ICollection`1[T] dependencies) [0x00140] in <bd68bc0fc2b34107a6e5a63d15643d80>:0
at GooglePlayServices.PlayServicesResolver+<>c__DisplayClass115_0.<ResolveUnsafe>b__3 () [0x0000c] in <bd68bc0fc2b34107a6e5a63d15643d80>:0
at Google.RunOnMainThread.ExecuteNext () [0x00047] in <35cc61ad4ecc44e4bdeaad3e377694d3>:0
UnityEngine.Debug:LogError (object)
Google.RunOnMainThread:ExecuteNext ()
Google.RunOnMainThread/<>c:<ExecuteAllUnnested>b__28_0 ()
Google.RunOnMainThread:RunAction (System.Action)
Google.RunOnMainThread:ExecuteAllUnnested (bool)
Google.RunOnMainThread:Run (System.Action,bool)
GooglePlayServices.PlayServicesResolver:ResolveUnsafe (System.Action`1<bool>,bool,bool)
GooglePlayServices.PlayServicesResolver:ResolveUnsafeAfterPromptCheck (System.Action`1<bool>,bool,bool,bool)
GooglePlayServices.PlayServicesResolver/<>c__DisplayClass113_0:<ResolveUnsafeAfterJetifierCheck>b__0 (bool)
GooglePlayServices.PlayServicesResolver/<>c__DisplayClass144_0:<CanEnableJetifierOrPromptUser>b__1 (GooglePlayServices.PlayServicesResolver/ApiLevelJetifierResult)
GooglePlayServices.PlayServicesResolver:CheckApiLevelForJetifier (bool,string,System.Action`1<GooglePlayServices.PlayServicesResolver/ApiLevelJetifierResult>)
GooglePlayServices.PlayServicesResolver/<>c__DisplayClass144_0:<CanEnableJetifierOrPromptUser>b__0 (bool)
GooglePlayServices.PlayServicesResolver:CheckGradleVersionForJetifier (bool,string,System.Action`1<bool>)
GooglePlayServices.PlayServicesResolver:CanEnableJetifierOrPromptUser (string,System.Action`1<bool>)
GooglePlayServices.PlayServicesResolver:ResolveUnsafeAfterJetifierCheck (System.Action`1<bool>,bool,bool,bool)
GooglePlayServices.PlayServicesResolver:ResolveUnsafeAfterMainTemplateCheck (System.Action`1<bool>,bool,bool,bool)
GooglePlayServices.PlayServicesResolver/<>c__DisplayClass110_0:<ScheduleResolve>b__1 ()
GooglePlayServices.PlayServicesResolver:ExecuteNextResolveJob ()
GooglePlayServices.PlayServicesResolver:ScheduleResolve (bool,bool,System.Action`1<bool>,bool)
GooglePlayServices.PlayServicesResolver:ExecuteMenuResolve (bool)
GooglePlayServices.PlayServicesResolver:MenuForceResolve ()
Please answer the following, if applicable:
What's the issue repro rate? 100%
What happened? How can we make the problem occur?
- Link any Package that contains a
.srcaar
file, like Firebase, in manifest.json via a relative or absolute path to any folder outside of eitherPackages
orAssets
- Set the resolver settings to patch the main gradle Template file and enable the local Maven repo
- Run the resolver
- After the exception is triggered the resolver becomes completely unresponsive and selecting
Resolve
again does nothing at all until Unity is fully relaunched.