Я пытаюсь перенести некоторые страницы Native Forms в существующее приложение Xamarin.iOS, чтобы эти страницы могли быть разделены между несколькими платформами.Я хотел бы использовать Xamarin.FFImageLoading для изображений на этих страницах Native Forms.Это очень легко, и я сделал без проблем.Трудность возникает потому, что это конкретное приложение Xamarin.iOS уже использует Xamarin.SDWebImage для аналогичной функциональности изображения.Когда эти два пакета Nuget вводятся и на них ссылаются, компоновщик начинает задыхаться от многочисленных сообщений о «Дублирующемся символе».Я полагаю (но я не уверен), что причина связана с WebP и тем, что я считаю его привязками, которые используют два пакета (из разных источников), которые сталкиваются.Так что, возможно, в более общем плане вопрос заключается в том, что я могу сделать, когда две разные нативные библиотеки определяют одинаковые символы?(если это проблема здесь)
Это конкретное сообщение об ошибке описано здесь: https://docs.microsoft.com/en-us/xamarin/ios/troubleshooting/mtouch-errors#mt5212-native-linking-failed-duplicate-symbol-, и я полагаю, что я сталкиваюсь с "Две разные нативные библиотеки могут определять одни и те же символы".в частности, но на этой странице вообще не упоминается, что делать с этой конкретной причиной.
Я попытался добавить аргументы mtouch, которые, как я думал, могут помочь, такие как "--registrar".: static "и" -gcc_flags -dead_strip ", и я также поиграл с добавлением операторов" [assembly: LinkWith (..., SmartLink = true)] "в assemblyinfo.cs.Тем не менее, это не помогло, и я начинаю думать, что оба пакета жестко навязывают свои привязки / символы способами, которые я не могу настроить после факта.Я не уверен, правда ли это, и не знаю, как это сказать.
У меня очень простой проект, воссоздающий проблему прямо здесь, но я не уверен, как им поделиться.Однако его можно очень легко воссоздать, просто создав новый проект Xamarin.iOS и добавив два пакета, а затем вызвав их оба с помощью некоторого вызова метода мусора в AppDelegate.cs (просто чтобы убедиться, что ни один из них полностью не удален).во время компоновки), например:
new FFImageLoading.ImageService();
new SDWebImage.FLAnimatedImageView();
Я ожидаю, что проект будет собран, но проект не будет построен, вместо этого выплевывая многочисленные ошибки такого рода:
Native linking failed, duplicate symbol: '_WebPAllocateDecBuffer'.
Duplicate symbol in: /.../liblibwebp.a(buffer_dec.o) (Location related to previous error)
Duplicate symbol in: /.../WebP.a(libwebpdspdecode_neon_la-alpha_processing_neon.o) (Location related to previous error)
Итакчто здесь ломается?Является ли это «две разные нативные библиотеки определяют одинаковые символы».как я подозреваю или это что то другое?Что я могу с этим поделать?
Два рассматриваемых пакета:
https://github.com/luberda-molinet/FFImageLoading
https://github.com/xamarin/XamarinComponents/tree/master/iOS/SDWebImage