Reactivecocoa: Apple отклонила сборку, потому что она связана с MapKit и не использует ее

Созданный на 24 сент. 2017  ·  5Комментарии  ·  Источник: ReactiveCocoa/ReactiveCocoa

Ваше приложение ссылается на платформу MapKit, но, похоже, не включает в себя функции Maps. Если в вашем приложении есть функции «Карты», ответьте на это сообщение в Центре разрешения проблем, указав, как найти его в своем приложении.

Если вы не собираетесь использовать Карты, отключите платформу MapKit. Если вы хотите использовать Карты, добавьте право «com.apple.developer.maps» и отправьте обновленный двоичный файл для проверки.

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

Оказалось, что удачный фреймворк - это ReactiveCocoa с расширениями MapKit, которые доступны с 2016 года… ☹️

otool -L ReactiveCocoa.framework/ReactiveCocoa; 
ReactiveCocoa.framework/ReactiveCocoa:
    @rpath/ReactiveCocoa.framework/ReactiveCocoa (compatibility version 1.0.0, current version 1.0.0)
    @rpath/ReactiveSwift.framework/ReactiveSwift (compatibility version 1.0.0, current version 1.0.0)
    @rpath/Result.framework/Versions/A/Result (compatibility version 1.0.0, current version 1.0.0)
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1349.63.0)
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.50.2)
    /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1504.82.104)
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1349.64.0)
    @rpath/libswiftAppKit.dylib (compatibility version 1.0.0, current version 802.0.53)
    @rpath/libswiftCore.dylib (compatibility version 1.0.0, current version 802.0.53)
    @rpath/libswiftCoreData.dylib (compatibility version 1.0.0, current version 802.0.53)
    @rpath/libswiftCoreGraphics.dylib (compatibility version 1.0.0, current version 802.0.53)
    @rpath/libswiftCoreImage.dylib (compatibility version 1.0.0, current version 802.0.53)
    @rpath/libswiftCoreLocation.dylib (compatibility version 1.0.0, current version 802.0.53)
    @rpath/libswiftDarwin.dylib (compatibility version 1.0.0, current version 802.0.53)
    @rpath/libswiftDispatch.dylib (compatibility version 1.0.0, current version 802.0.53)
    @rpath/libswiftFoundation.dylib (compatibility version 1.0.0, current version 802.0.53)
    @rpath/libswiftIOKit.dylib (compatibility version 1.0.0, current version 802.0.53)
    @rpath/libswiftMapKit.dylib (compatibility version 1.0.0, current version 802.0.53)
    @rpath/libswiftObjectiveC.dylib (compatibility version 1.0.0, current version 802.0.53)
    @rpath/libswiftQuartzCore.dylib (compatibility version 1.0.0, current version 802.0.53)
    @rpath/libswiftXPC.dylib (compatibility version 1.0.0, current version 802.0.53)

По какой-то причине раньше эта проблема не была отмечена. Я объяснил ситуацию и ожидал ответа, но это похоже на законный случай - приложению не нужен MapKit, и ему не нужны права, если пользователям действительно не нужны эти функции. Какие-нибудь простые обходные пути?

Самый полезный комментарий

Что касается решения, разделение MapKit на ReactiveMapKit, безусловно, является изящным подходом.

Думаю, мы пойдем по этому пути. Вероятно, подспецификации для пользователей CocoaPods.

Все 5 Комментарий

Какие-нибудь простые обходные пути?

Вы можете создать RAC без привязок MapKit, и все это покрывается MKMapView.swift AFAICR. У нас нет других настроек сборки или мест, которые ссылаются на MapKit.

Если вы используете CocoaPods, вы можете клонировать podspec, чтобы исключить указанный файл, по-прежнему указывая на это репо.

Очевидно, нам придется предлагать эти привязки отдельно, если Apple ужесточит правила. Мы не можем обойти это без новой цели или подспецификации фреймворка, учитывая, как работает импорт модуля Swift.

Да, MKMapView.swift похоже, является корнем этой зависимости. Это, безусловно, обходной путь, но он потребует выполнения его каждый раз, когда зависимости обновляются с помощью Carthage, что выводит проблему на совершенно новый уровень. В любом случае, я посмотрю, что группа обзора Apple думает об этой ситуации.

Что касается решения, разделение MapKit на ReactiveMapKit, безусловно, является изящным подходом. В качестве альтернативы мы могли бы использовать флаг компилятора MAPKIT извлеченный из среды, и заключить все расширение в оператор условной компиляции. Просто попробовал это с Карфагеном, и это сработало, но эстетика этого вызывает вопросы:

ianbytchek<strong i="9">@ibmbp</strong>:dependency$ carthage build reactivecocoa --platform mac
ianbytchek<strong i="10">@ibmbp</strong>:Mac$ otool -L ReactiveCocoa.framework/ReactiveCocoa 
ReactiveCocoa.framework/ReactiveCocoa:
    …
    @rpath/libswiftIOKit.dylib (compatibility version 1.0.0, current version 802.0.53)
    @rpath/libswiftObjectiveC.dylib (compatibility version 1.0.0, current version 802.0.53)
    …
ianbytchek<strong i="11">@ibmbp</strong>:dependency$ RC_SWIFT_FLAGS="-DMAPKIT" carthage build reactivecocoa --platform mac
ianbytchek<strong i="12">@ibmbp</strong>:Mac$ otool -L ReactiveCocoa.framework/ReactiveCocoa 
ReactiveCocoa.framework/ReactiveCocoa:
    …
    @rpath/libswiftIOKit.dylib (compatibility version 1.0.0, current version 802.0.53)
    @rpath/libswiftMapKit.dylib (compatibility version 1.0.0, current version 802.0.53)
    @rpath/libswiftObjectiveC.dylib (compatibility version 1.0.0, current version 802.0.53)
    …

Что касается решения, разделение MapKit на ReactiveMapKit, безусловно, является изящным подходом.

Думаю, мы пойдем по этому пути. Вероятно, подспецификации для пользователей CocoaPods.

Было бы целесообразно решить эту проблему в будущем обновлении, однако сейчас мы продолжим ваше рассмотрение.

Apple пощадила меня, но сказала, что в следующий раз наказание неизбежно.

Рад узнать. Продвинем это как можно скорее.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги