roubachof / NukeProxy

MIT License
17 stars 12 forks source link

Possibility of Xamarin.Nuke Release #19

Open markmccaigue opened 1 year ago

markmccaigue commented 1 year ago

Hello, and thank you for the binding library!

We have a Xamarin.Forms app which we are in the process of porting to MAUI, but in the meantime we are hoping to make use of the DataCache Nuke option. It looks like this is available in version 3.0 of the bindings via the SetupWithDataCache function.

I notice that there are two Nuget packages, Xamarin.Nuke targeting xamarinios10, and ImageCaching.Nuke targeting dotnet6. I wonder if you would consider releasing v3 of Xamarin.Nuke so that we could use it in our Forms app?

Cheesebaron commented 1 year ago

I tried using Xamarin.Legacy.Sdk, which could have given us backwards compat with Xamarin.iOS, but didn't have much luck and ended up only supporting net6.0-ios and net6.0-maccatalyst.

I would be inclined not to support it. I guess it would "simply" be a matter of adding a new project with the old Xamarin.iOS target and building it, but would need to investigate if it is as simple as that.

markmccaigue commented 1 year ago

Thanks, based on your comment I did attempt pulling the latest ImageCaching.Nuke project into our solution, and converting it over to an old-style project targeting Xamarin.iOS10. I also pulled down Nuke from Carthage, and ran the build.sh script, which did produce output.

However, our project fails to compile with linking errors such as the following:

Native linking failed, undefined Objective-C class: DataLoader. The symbol '_OBJCCLASS$_DataLoader' could not be found in any of the libraries or frameworks linked with your application.

I'm certain I'm making an error of some sort as this is my first time dealing with binding libraries. I tried adding the [Protocol] attribute to the interfaces, which allowed the app to build and run, however the instances such as ImagePipeline were null at runtime, so I don't think this was the correct solution.

If you have any guidance it would be much appreciated, but I completely understand that supporting XF may not be a priority any longer.

markmccaigue commented 1 year ago

Just as an update, I was able to solve the problem above by including the following in the binding project file

  <PropertyGroup>
    <NoBindingEmbedding>true</NoBindingEmbedding>
  </PropertyGroup>

This seems to be necessary when referencing an xcframework and using Xamarin iOS, according to this issue: https://github.com/xamarin/xamarin-macios/issues/10774

Please feel free to close this issue, or if you want to explore ongoing support for Xamarin.iOS I'd be happy to share the project file. It would not be suitable for a PR, as I edited the current project file in place rather than adding a new one as I wasn't sure of the implications of a potential new project having different namespaces to the current one.