Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] Android resolver fails to copy aar files from local maven repository provided from packages (Unity 6). #697

Open
pikpok-lihhern opened this issue Jul 11, 2024 · 6 comments
Assignees

Comments

@pikpok-lihhern
Copy link

[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:
image

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?

  1. Create empty project with Unity 6000.0.x
  2. Add EDM4U and firebase packages.
  3. Run android resolver.
@google-oss-bot
Copy link

This issue does not seem to follow the issue template. Make sure you provide all the required information.

@argzdev argzdev removed the new to be triaged label Jul 11, 2024
@ilterbilguven
Copy link

This issue still exists, and blocks devs to build with Unity 6.

@gumcstronger
Copy link

This issue still exists, and blocks devs to build with Unity 6.

I have the same problem, may I ask how to solve it in the end?

@ilterbilguven
Copy link

This issue still exists, and blocks devs to build with Unity 6.

I have the same problem, may I ask how to solve it in the end?

Still waiting Google to acknowledge the issue and fix it

@TyelorD
Copy link

TyelorD commented Aug 29, 2024

I'm also having the same issue with Unity 6.

Google really needs to fix this, because Unity 6 won't be in preview for much longer, and will likely be to go-to version for most people due to the removal of the Unity Splash Screen requirement.

I should add that I'm not even able to get Unity to build an Android build at all. It gets stuck when trying to compile Scene 0 every single time I try to make an Android build... It runs in Play Mode fine, and builds and runs on iOS as well.

@argzdev argzdev self-assigned this Sep 6, 2024
@argzdev
Copy link
Collaborator

argzdev commented Sep 6, 2024

Thank you all for these inputs, I was able to reproduce the same behavior. I'll go ahead and notify our engineering team. Hopefully we can address this issue before the full release of Unity 6.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants