Вопрос или проблема
Мой .ipa не проходит проверку при попытке отправить его в Apple App Store Connect с этой ошибкой:
Неверный пакет. Пакет Nerdbank.Zcash.App.iOS.app/Frameworks/nerdbank_zcash_rust.framework не поддерживает минимальную версию ОС, указанную в Info.plist.
Но и приложение, и фреймворк используют файлы Info.plist с:
<key>MinimumOSVersion</key>
<string>17.5</string>
Это число соответствует тому, что otool
указывает, что бинарные файлы как для приложения, так и для самого фреймворка утверждают:
$ otool -l ./src/nerdbank-zcash-rust/target/aarch64-apple-ios/release/libnerdbank_zcash_rust.dylib | grep -E -A4 '(LC_VERSION_MIN_MACOSX|LC_BUILD_VERSION)' | grep -B1 sdk
minos 17.5
sdk 17.5
Что еще может способствовать этой проблеме?
Я не использую Xcode для разработки этого приложения. Это приложение .NET (с библиотекой на Rust), использующее Avalonia в качестве UI-фреймворка. Это, похоже, делает его не дубликатом других подобных вопросов на Stack Overflow, которые сосредоточены исключительно на Flutter или Xcode.
iOS-фреймворк nerdbank_zcash_rust, упомянутый в сообщении об ошибке, собран в этом же репозитории, поэтому я могу изменить все, что необходимо, чтобы это исправить.
Ответ или решение
Ошибка, с которой вы столкнулись при попытке загрузить ваш .ipa файл в App Store Connect, указывает на то, что фреймворк (в данном случае nerdbank_zcash_rust.framework
) не поддерживает минимальную версию ОС, указанную в Info.plist вашего приложения. Несмотря на то, что вы предоставили информацию о том, что оба файла Info.plist (как для приложения, так и для фреймворка) указывают на минимальную версию ОС 17.5, проблема может заключаться в нескольких других аспектах.
Вот несколько шагов и рекомендаций, которые могут помочь вам в решении этой проблемы:
-
Проверьте Info.plist каждого фреймворка: Убедитесь, что в каждом фреймворке, который используется вашим приложением, правильно указана минимальная версия ОС. Это особенно относится к фреймворкам, которые могут быть зависимостями вашего основного приложения.
-
Используйте
otool
для проверки всех зависимостей: Запуститеotool
не только для вашего фреймворка, но и для всех других используемых библиотек. Эффективно выполните:otool -L MyApp.app/MyApp
Это покажет все зависимости и их минимальные версии. Убедитесь, что каждая из зависимостей также указывает на подходящую минимальную версию ОС.
-
Сборка фреймворка: Возможно, ваш фреймворк может быть собран с различными настройками. Убедитесь, что у вас установлена правильная версия SDK для сборки, и что в настройках сборки указана правильная версия OS. Убедитесь, что вы используете флаг
-mios-version-min=17.5
при сборке. -
Показатели целевой архитектуры: Проверьте, чтобы все ваши бинарные файлы и библиотеки были собраны для поддерживаемых архитектур (например, arm64, armv7). Используйте:
file MyApp.app/MyApp
Убедитесь, что поддерживаемые архитектуры соответствуют требованиям App Store.
-
Чистая сборка: Иногда старые кэши или артефакты сборки могут привести к проблемам. Попробуйте выполнить полную чистку проекта и пересобрать его с нуля.
-
Регистрация новых ошибок в Xcode: Если вы хотите использовать инструменты отладки Xcode, вы можете создать тестовый проект в Xcode и импортировать ваш проект с .NET. Это позволит вам использовать встроенные возможности отладки и помощь в выявлении проблем.
-
Обновите инструменты сборки: Убедитесь, что вы используете последние версии инструментов сборки
dotnet
,rust
, и всех плагинов, которые могут повлиять на сборку проекта.
Если вы выполнили все вышеуказанные действия и проблема сохраняется, рассмотрите возможность создания нового вопроса на площадках для разработчиков, указав все детали вашей сборки и используемые инструменты. Вы также можете обратиться в поддержку Apple, если проблема будет неразрешимой.
Удачи в решении проблемы с подачей вашего приложения!