Description
[REQUIRED] Please fill in the following fields:
- Unity editor version: 6000.0.x
- External Dependency Manager version: 1.2.181
- Source you installed EDM4U: Unity Package Manager
- Features in External Dependency Manager in use: Android Resolver
- Plugins SDK in use: Firebase App, Firebase Cloud Messaging
- Platform you are using the Unity editor on: Windows
[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.)
When running the Android resolver, the resolver failed to copy aar files provided in the firebase packages with the following error:
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 <21f453231f9b419fb92653c858b2eaf6>:0
at System.IO.Path.GetFullPath (System.String path) [0x00000] in <21f453231f9b419fb92653c858b2eaf6>:0
at System.IO.DirectoryInfo..ctor (System.String path) [0x00006] in <21f453231f9b419fb92653c858b2eaf6>:0
at (wrapper remoting-invoke-with-check) System.IO.DirectoryInfo..ctor(string)
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x00010] in /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/VersionHandlerImpl/src/FileUtils.cs:646
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/VersionHandlerImpl/src/FileUtils.cs:648
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/VersionHandlerImpl/src/FileUtils.cs:648
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/VersionHandlerImpl/src/FileUtils.cs:648
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/VersionHandlerImpl/src/FileUtils.cs:648
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/VersionHandlerImpl/src/FileUtils.cs:648
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/VersionHandlerImpl/src/FileUtils.cs:648
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/VersionHandlerImpl/src/FileUtils.cs:648
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/VersionHandlerImpl/src/FileUtils.cs:648
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/VersionHandlerImpl/src/FileUtils.cs:648
at Google.FileUtils.CreateFolder (System.String path, Google.Logger logger) [0x0001e] in /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/VersionHandlerImpl/src/FileUtils.cs:648
at GooglePlayServices.PlayServicesResolver.CopyAssetAndLabel (System.String sourceLocation, System.String targetLocation, System.Boolean force) [0x0009b] in /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:2514
at GooglePlayServices.GradleTemplateResolver.CopySrcAars (System.Collections.Generic.ICollection`1[T] dependencies) [0x000be] in /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/AndroidResolver/src/GradleTemplateResolver.cs:209
at GooglePlayServices.GradleTemplateResolver.InjectDependencies (System.Collections.Generic.ICollection`1[T] dependencies) [0x00140] in /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/AndroidResolver/src/GradleTemplateResolver.cs:548
at GooglePlayServices.PlayServicesResolver+<>c__DisplayClass115_0.<ResolveUnsafe>b__3 () [0x0000c] in /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:2078
at Google.RunOnMainThread.ExecuteNext () [0x00047] in /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/VersionHandlerImpl/src/RunOnMainThread.cs:486
UnityEngine.Debug:LogError (object)
Google.RunOnMainThread:ExecuteNext () (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/VersionHandlerImpl/src/RunOnMainThread.cs:488)
Google.RunOnMainThread/<>c:<ExecuteAllUnnested>b__28_0 () (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/VersionHandlerImpl/src/RunOnMainThread.cs:536)
Google.RunOnMainThread:RunAction (System.Action) (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/VersionHandlerImpl/src/RunOnMainThread.cs:343)
Google.RunOnMainThread:ExecuteAllUnnested (bool) (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/VersionHandlerImpl/src/RunOnMainThread.cs:530)
Google.RunOnMainThread:Run (System.Action,bool) (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/VersionHandlerImpl/src/RunOnMainThread.cs:472)
GooglePlayServices.PlayServicesResolver:ResolveUnsafe (System.Action`1<bool>,bool,bool) (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:2076)
GooglePlayServices.PlayServicesResolver:ResolveUnsafeAfterPromptCheck (System.Action`1<bool>,bool,bool,bool) (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:1944)
GooglePlayServices.PlayServicesResolver/<>c__DisplayClass113_0:<ResolveUnsafeAfterJetifierCheck>b__0 (bool) (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:1853)
GooglePlayServices.PlayServicesResolver/<>c__DisplayClass144_0:<CanEnableJetifierOrPromptUser>b__1 (GooglePlayServices.PlayServicesResolver/ApiLevelJetifierResult) (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:2825)
GooglePlayServices.PlayServicesResolver:CheckApiLevelForJetifier (bool,string,System.Action`1<GooglePlayServices.PlayServicesResolver/ApiLevelJetifierResult>) (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:2789)
GooglePlayServices.PlayServicesResolver/<>c__DisplayClass144_0:<CanEnableJetifierOrPromptUser>b__0 (bool) (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:2810)
GooglePlayServices.PlayServicesResolver:CheckGradleVersionForJetifier (bool,string,System.Action`1<bool>) (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:2717)
GooglePlayServices.PlayServicesResolver:CanEnableJetifierOrPromptUser (string,System.Action`1<bool>) (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:2808)
GooglePlayServices.PlayServicesResolver:ResolveUnsafeAfterJetifierCheck (System.Action`1<bool>,bool,bool,bool) (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:1850)
GooglePlayServices.PlayServicesResolver:ResolveUnsafeAfterMainTemplateCheck (System.Action`1<bool>,bool,bool,bool) (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:1796)
GooglePlayServices.PlayServicesResolver/<>c__DisplayClass110_0:<ScheduleResolve>b__1 () (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:1751)
GooglePlayServices.PlayServicesResolver:ExecuteNextResolveJob () (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:1598)
GooglePlayServices.PlayServicesResolver:ScheduleResolve (bool,bool,System.Action`1<bool>,bool) (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:1764)
GooglePlayServices.PlayServicesResolver:ExecuteMenuResolve (bool) (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:2143)
GooglePlayServices.PlayServicesResolver:MenuForceResolve () (at /Users/amaurice/Documents/GitHub/unity-jar-resolver/source/AndroidResolver/src/PlayServicesResolver.cs:2167)
Upon further investigation, I found that the cause was actually due to path resolving in FileUtils.cs
The following regex no longer match for Unity 6:
/// <summary>
/// Regex to match packages folder like "Library/PackageCache/com.company.pkg"
/// </summary>
private static Regex PACKAGES_PHYSICAL_PATH_REGEX =
new Regex(@"^(Library[/\\]PackageCache[/\\])([^/\\]+)(@[^/\\]+)[/\\](.*)?$");
This is because Unity 6 has changed the folder naming by removing the @version
postfix:
Understanding that, moving the firebase packages to the local Packages/
folder proved to "resolve" this issue as that will avoid matching the package path via this regex — it's not an ideal solution though.
Adding on top of this, there is also another less problematic deprecated warning with the resolver's generated gradle settings in mainTemplate.gradle
:
// Android Resolver Exclusions Start
android {
packagingOptions {
exclude ('/lib/arm64-v8a/*' + '*')
exclude ('/lib/armeabi/*' + '*')
exclude ('/lib/mips/*' + '*')
exclude ('/lib/mips64/*' + '*')
exclude ('/lib/x86_64/*' + '*')
}
}
// Android Resolver Exclusions End
With the above, Unity will complain that packagingOptions
is deprecated and changes it to packaging
if you let it auto fix when trying to build an Android build.
Please answer the following, if applicable:
What's the issue repro rate? 100%
What happened? How can we make the problem occur?
- Create empty project with Unity 6000.0.x
- Add EDM4U and firebase packages.
- Run android resolver.