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

RivePlayer is not AoT compatible (Windows App SDK 1.6) #567

Open
Arlodotexe opened this issue Aug 23, 2024 · 0 comments
Open

RivePlayer is not AoT compatible (Windows App SDK 1.6) #567

Arlodotexe opened this issue Aug 23, 2024 · 0 comments

Comments

@Arlodotexe
Copy link
Member

Arlodotexe commented Aug 23, 2024

Seems like tests are failing as a result of some issue with RivePlayer on Microsoft.WindowsAppSdk 1.6-preview1+ with AoT enabled:

System.TypeInitializationException: The type initializer for 'RiveSharp.Factory' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'rive' or one of its dependencies: The specified module could not be found. (0x8007007E)
  Stack Trace:
      at RiveSharp.RiveAPI.Factory_RegisterDelegates(FactoryDelegates delegates)
   at RiveSharp.Factory..cctor()
--- End of inner exception stack trace ---
    at RiveSharp.Scene..ctor()
   at CommunityToolkit.Labs.WinUI.Rive.RivePlayer..ctor() in /_/components/RivePlayer/src/RivePlayer.cs:line 49
   at RivePlayerExperiment.Tests.ExampleRivePlayerTestClass.ComplexAsyncLoadUIExampleWithoutDispatcherTest() in D:\a\Labs-Windows\Labs-Windows\components\RivePlayer\tests\ExampleRivePlayerTestClass.cs:line 121
   at RivePlayerExperiment.Tests.ExampleRivePlayerTestClass.<ComplexAsyncLoadUIExampleWithoutDispatcherTest_ExampleRivePlayerTestClass_Test>b__12_0() in /_/ProjectHeads/AllComponents/Tests.Wasdk/obj/x64/Release/net8.0-windows10.0.22621.0/win-x64/CommunityToolkit.Tooling.TestGen/CommunityToolkit.Tooling.TestGen.UIThreadTestMethodGenerator/ComplexAsyncLoadUIExampleWithoutDispatcherTest_ExampleRivePlayerTestClass.g.cs:line 15

Originally posted by @Arlodotexe in #561 (comment)

It looks like this is happening because the Rive.RiveSharp package is using runtime marshalling to call the native binary under the hood, which isn't AoT/trim friendly.

This issue should only be present when using Wasdk 1.6+ with AoT enabled. Other platforms are unaffected, but NativeAoT is not compatible with runtime marshalling. For more information, see Native interoperability best practices.

Fixing this will require changes to the underlying library. To avoid blocking the toolkit as a whole, the tests will be disabled on Wasdk until the issue can be resolved.

Arlodotexe added a commit that referenced this issue Aug 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant