Reactivecocoa: Appleは、MapKitに対してリンクし、それを使用しないため、ビルドを拒否しました

作成日 2017年09月24日  ·  5コメント  ·  ソース: ReactiveCocoa/ReactiveCocoa

アプリはMapKitフレームワークにリンクしていますが、マップ機能が含まれていないようです。 アプリにマップ機能が含まれている場合は、アプリ内でアプリを見つける方法の手順を記載した解決センターでこのメッセージに返信してください。

マップを使用する予定がない場合は、MapKitフレームワークのリンクを解除してください。 マップを使用する場合は、「com.apple.developer.maps」エンタイトルメントを追加し、レビューのために更新されたバイナリを送信してください。

MapKitフレームワークに対してリンクするサードパーティのフレームワークを使用している場合は、サードパーティのフレームワークプロバイダーに連絡して、リンクを解除する方法を確認することをお勧めします。

幸運なフレームワークは、2016年から利用可能なMapKit拡張機能を備えたReactiveCocoaであることが判明しました…☹️

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を必要とせず、ユーザーが実際にこの機能を必要としない限り、資格は必要ありません。 簡単な回避策はありますか?

bug

最も参考になるコメント

ソリューションに関しては、MapKitをReactiveMapKitに分離することは間違いなく優れたアプローチです。

私たちはこの道をたどると思います。 おそらくCocoaPodsユーザーのサブスペックです。

全てのコメント5件

簡単な回避策はありますか?

MapKitバインディングなしでRACを構築できます。これは、すべて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 評価