#reference #xamarin.ios #frameworks #native
Вопрос:
Используя XCode, я создал 12 идентичных фреймворков, только их имена разные (каждый из них происходит от соответствующего названия проекта XCode).
Следуя этому руководству, я внедрил одну из платформ в проект Xamarin.ios в качестве собственной ссылки.
Использование [DllImport(«Фреймворк», точка входа = «Имя функции»)] Я могу получить доступ к любой из 12 платформ как в режиме отладки и выпуска, так и в симуляторе и на устройстве. Пока все идет хорошо.
НО при добавлении всех 12 фреймворков в проект Xamarin.ios во время запуска на устройстве начинают происходить странные вещи (симулятор почему-то не затрагивается!): доступ возможен только к нескольким фреймворкам (обычно 4), остальные выдают исключение Dllnotfound. И даже больше: в зависимости от последовательности добавления фреймворка в проект Xamarin.ios к нему можно получить доступ или создать исключение(!) Например, если я начну процесс добавления с одной из 8 «плохих» фреймворков из предыдущего процесса сборки, этот больше не будет плохим и к нему можно будет получить прекрасный доступ — взамен одна из доступных фреймворков из предыдущего процесса сборки затем выдаст Dllnotfound. Чтобы уточнить, все 12 фреймворков имеют одинаковую внутреннюю жизнь, только разные имена и разные имена точек входа, остальные полностью идентичны, следовательно, взаимозаменяемы.
Моей первой мыслью было ограничение по количеству или размеру встроенных фреймворков, которое было установлено для проектов Xamarin?? В моем случае общий размер приложения с 12 фреймворками составляет около 110 Мб в режиме отладки.
Моей следующей мыслью было возможное столкновение символов между фреймворками: но это не статические библиотеки, использующие «Внутренний__» с огромным пулом всех символов вместе, а строго разделенный набор фреймворков с разными именами (контейнерная система). Кроме того, столкновение символов приведет к ошибке во время сборки, а не во время выполнения…
Еще одна мысль была о моем бесплатном профиле подготовки: может быть, с платной учетной записью разработчика нет ограничений на количество встроенных фреймворков?? Это объяснило бы, почему он всегда работает на Sim-карте…
Еще несколько вещей, которые я пробовал, а также все возможные их комбинации (хотя пока безуспешно):
- Использование различных версий XCode для создания фреймворков (версии 8 и 11)
- Использование различных версий Visual Studio для Mac для создания вызывающей программы (2017 и 2019)
- Использование различных версий развертывания на устройстве (iOS 10.3 и 13.2)
- Использование опции «интеллектуальная ссылка» для собственной ссылки в Visual Studio
- Использование параметра «принудительная загрузка» для собственной ссылки в Visual Studio
- Используя дополнительно возможность указать флаги компоновщика в «дополнительных аргументах mtouch» для собственной ссылки в Visual Studio
- Использование параметра «Связать все сборки» в Visual Studio
Я что-то упускаю в своем процессе, в своей настройке или в своей идее? Любая помощь была бы признательна после стольких лет расследования. Спасибо:-)
Комментарии:
1. Я не нахожу ограничения по количеству в официальном документе. Я обострил это дело и хотел бы получить обратную связь как можно скорее.