2015-08-20 5 views
11

Ich musste kürzlich meine eigenen Frameworks duplizieren, um sie mit der nativen watchOS 2-Erweiterung verknüpfen zu können, da die Plattform anders ist. Also habe ich für jedes Framework X ein Gegenstück zu X-watchos. Alles funktioniert gut im Simulator und wenn sie direkt auf meine Geräte bauen, und es war nicht, bis ich zu archivieren versucht, dass ich diese Verknüpfung Fehler bekam:Verknüpfung von dualen Frameworks (iphoneos und watchos) mit demselben Produktnamen

Linking error

I lipo -i auf dem integrierten watchOS Rahmen lief und Sicher genug, seine Bögen sind arm7 und arm64 anstelle von armv7k.

Als ich weiter in das gebauten Verzeichnis sah, bemerkte ich dies:

Derived data structure

Beiden Versionen sind symbolische Links auf die gleiche Datei, und weil das die gleichen Produktnamen haben, sind sie außer Kraft gesetzt werden. Ich könnte sie dazu bringen, verschiedene Namen zu haben, aber das würde sie wirklich umständlich machen.

Beachten Sie, dass dies kein Problem für Frameworks von Drittanbietern ist, da Carthage sie bereits in separaten Verzeichnissen erstellt.

EDIT 2015.08.22: http://www.openradar.me/22392501

EDIT 2015.08.24: Ich habe ein Radar mit einem Beispielprojekt eingereicht Diese in Xcode 7 Beta 6 Release Notes als quittiert wurde Bekanntes Problem:

known issue

EDIT 2015.09.09: Xcode 7.1 Beta Release Notes Hinweis, dass dieses Problem behoben ist, aber ich habe es noch nicht bestätigt.

Antwort

1

Dies funktioniert für mich in Xcode 7.1.

+0

Yup, kann ich bestätigen, dass dies in 7.1 Beta 1 so gut wie erwartet funktioniert. – NachoSoto

+0

Schließlich verwenden Sie den gleichen Produktnamen für jede Version (Uhren- und iOS) Ihres Rahmens oder einer anderen? – CarlosGz

+0

Am 7.1 Ich bin mit dem gleichen Produktnamen für jede Plattform nur in Ordnung. –

0

Ich verwende eine ähnliche Konfiguration mit meinen eigenen Frameworks, aber ich habe einen anderen Namen bei der Erstellung in jeder Plattform (MyFramework und MyFramework-watchOS). Vergessen Sie nicht, einen allgemeinen Produktnamen manuell (in beiden Fällen MyFramework) auf der Registerkarte "Buildeinstellungen" jedes Frameworks festzulegen.

+0

Das ist genau meine Konfiguration: Wie ich bereits erwähnte, sind die Zielnamen unterschiedlich (X und X-Watchos), aber der Produktname ist X. – NachoSoto

+0

Sorry, meine Schuld. Ich nahm ein Beispiel von einem Apple-Beispielprojekt "Lister" und von einer letztjährigen Videosession über Frameworks und es funktioniert gut in einem meiner Projekte ... Hoffe, Sie finden bald eine Lösung – CarlosGz

+0

Könnten Sie auf dieses Projekt verlinken? Ich werde einen Blick darauf werfen und vielleicht werde ich sehen, was dort anders ist :) – NachoSoto

Verwandte Themen