Reactivecocoa: Apple a rejeté la construction car elle est liée à MapKit et ne l'utilise pas

Créé le 24 sept. 2017  ·  5Commentaires  ·  Source: ReactiveCocoa/ReactiveCocoa

Votre application est liée au framework MapKit, mais ne semble pas inclure la fonctionnalité Maps. Si votre application inclut la fonctionnalité Maps, veuillez répondre à ce message dans le Centre de résolution en expliquant comment la localiser dans votre application.

Si vous n'avez pas l'intention d'utiliser Maps, veuillez dissocier le framework MapKit. Si vous souhaitez utiliser Maps, veuillez ajouter le droit "com.apple.developer.maps" et soumettre un fichier binaire mis à jour pour examen.

Si vous utilisez un framework tiers lié au framework MapKit, vous pouvez contacter le fournisseur de framework tiers pour obtenir de l'aide sur la dissociation de celui-ci.

Il s'avère que le framework chanceux est ReactiveCocoa avec les extensions MapKit, qui sont disponibles depuis 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)

Pour une raison quelconque, ce problème n'a pas été signalé auparavant. J'ai expliqué la situation et j'attends une réponse, mais cela semble être un cas légitime - l'application n'a pas besoin de MapKit et n'a pas besoin de droits sans que les utilisateurs aient réellement besoin de cette fonctionnalité. Des solutions de contournement faciles ?

bug

Commentaire le plus utile

En ce qui concerne la solution, séparer MapKit en ReactiveMapKit est certainement une approche soignée.

Je pense que nous irions dans cette voie. Probablement des sous-spécifications pour les utilisateurs de CocoaPods.

Tous les 5 commentaires

Des solutions de contournement faciles ?

Vous pouvez créer RAC sans les liaisons MapKit, qui sont toutes couvertes par MKMapView.swift AFAICR. Nous n'avons pas d'autres paramètres de construction ou lieux liés à MapKit.

Si vous utilisez CocoaPods, vous pouvez cloner le podspec pour exclure ledit fichier, tout en pointant toujours vers ce référentiel.

Apparemment, nous devrions proposer ces fixations séparément si Apple durcissait les règles. Nous ne pouvons pas le contourner sans une nouvelle cible ou sous-spécification de framework étant donné le fonctionnement de l'importation du module Swift.

Oui, MKMapView.swift semble être la racine de cette dépendance. C'est certainement une solution de contournement, mais cela impliquerait de le faire à chaque fois que les dépendances sont mises à jour avec Carthage, ce qui amène le problème à un tout autre niveau. Quoi qu'il en soit, je vais voir ce que l'équipe de révision Apple pense de cette situation.

En ce qui concerne la solution, séparer MapKit en ReactiveMapKit est certainement une approche soignée. Alternativement, nous pourrions utiliser l'indicateur de compilateur MAPKIT extrait de l'environnement et envelopper l'ensemble de l'extension dans une instruction de compilation conditionnelle. Je viens d'essayer avec Carthage et cela a fonctionné, mais l'esthétique soulève des questions :

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)
    …

En ce qui concerne la solution, séparer MapKit en ReactiveMapKit est certainement une approche soignée.

Je pense que nous irions dans cette voie. Probablement des sous-spécifications pour les utilisateurs de CocoaPods.

Il serait approprié de résoudre ce problème dans une future mise à jour, cependant, nous allons maintenant procéder à votre examen.

Apple m'a épargné, mais a dit que la punition était inévitable la prochaine fois.

Heureux de savoir. Fera avancer cela dès que possible.

Cette page vous a été utile?
0 / 5 - 0 notes