Недействительный пакет. Пакет Some.app/Frameworks/Some.framework не поддерживает минимальную версию ОС, указанную в Info.plist.

Вопрос или проблема

Мой .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, проблема может заключаться в нескольких других аспектах.

Вот несколько шагов и рекомендаций, которые могут помочь вам в решении этой проблемы:

  1. Проверьте Info.plist каждого фреймворка: Убедитесь, что в каждом фреймворке, который используется вашим приложением, правильно указана минимальная версия ОС. Это особенно относится к фреймворкам, которые могут быть зависимостями вашего основного приложения.

  2. Используйте otool для проверки всех зависимостей: Запустите otool не только для вашего фреймворка, но и для всех других используемых библиотек. Эффективно выполните:

    otool -L MyApp.app/MyApp

    Это покажет все зависимости и их минимальные версии. Убедитесь, что каждая из зависимостей также указывает на подходящую минимальную версию ОС.

  3. Сборка фреймворка: Возможно, ваш фреймворк может быть собран с различными настройками. Убедитесь, что у вас установлена правильная версия SDK для сборки, и что в настройках сборки указана правильная версия OS. Убедитесь, что вы используете флаг -mios-version-min=17.5 при сборке.

  4. Показатели целевой архитектуры: Проверьте, чтобы все ваши бинарные файлы и библиотеки были собраны для поддерживаемых архитектур (например, arm64, armv7). Используйте:

    file MyApp.app/MyApp

    Убедитесь, что поддерживаемые архитектуры соответствуют требованиям App Store.

  5. Чистая сборка: Иногда старые кэши или артефакты сборки могут привести к проблемам. Попробуйте выполнить полную чистку проекта и пересобрать его с нуля.

  6. Регистрация новых ошибок в Xcode: Если вы хотите использовать инструменты отладки Xcode, вы можете создать тестовый проект в Xcode и импортировать ваш проект с .NET. Это позволит вам использовать встроенные возможности отладки и помощь в выявлении проблем.

  7. Обновите инструменты сборки: Убедитесь, что вы используете последние версии инструментов сборки dotnet, rust, и всех плагинов, которые могут повлиять на сборку проекта.

Если вы выполнили все вышеуказанные действия и проблема сохраняется, рассмотрите возможность создания нового вопроса на площадках для разработчиков, указав все детали вашей сборки и используемые инструменты. Вы также можете обратиться в поддержку Apple, если проблема будет неразрешимой.

Удачи в решении проблемы с подачей вашего приложения!

Оцените материал
Добавить комментарий

Капча загружается...