2015-10-30 9 views
11

Ich bin nicht sicher, ob dies der richtige Ort ist, um dies zu fragen, also tut mir leid, wenn ich den falschen Abschnitt benutze. Wir Probleme sind mit unseren App auf iTunes Connect senden, die E-Mail wir haben, sagt:Binary abgelehnt, weil ungültiger Symlink, irgendwelche Ideen?

Invalid Symlink - Your package contains a symbolic link 'PlugIns/$REDACTED_WATCHKIT_EXTENSION_TARGET_NAME$.appex/$REDACTED_WATCHKIT_EXTENSION_TARGET_NAME$.appex' which resolves to a location '/Users/$REDACTED_USER$/Library/Developer/Xcode/DerivedData/Seta-ctfzptralingvtbxhssdlkkzkclw/Build/Intermediates/ArchiveIntermediates/Seta/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/$REDACTED_WATCHKIT_EXTENSION_TARGET_NAME$.appex' that does not exist or is outside of the package. 

Ich habe versucht, den Fehler zu reproduzieren, indem ein leeres Xcode-Projekt mit den gleichen Einstellungen wie unser Projekt zu schaffen, aber ich konnte nicht Bekomme denselben Fehler von iTunes Connect. Hat jemand eine Idee, warum dieser Symlink erstellt wird? Ich überprüfte das Projekt des Projektes .ipa und es enthält diesen symlink nicht in diesem Pfad, also ist das offensichtlich falsch, aber ich kann die Aufbaueinstellung/-konfiguration nicht finden, die den symlink verursacht.

überprüfte ich die xcodebuild Ausgabe und ich fand dies:

SymLink build/SetaWatchKitExtension.appex /Users/$REDACTED_USER$/Library/Developer/Xcode/DerivedData/Seta-ctfzptralingvtbxhssdlkkzkclw/Build/Intermediates/ArchiveIntermediates/Seta/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/SetaWatchKitExtension.appex 
    cd $REDACTED_PROJECT_PATH$ 
    export PATH="/Applications/Xcode-7.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode-7.1.app/Contents/Developer/usr/bin:$REDACTED_PATH_ENV_VARIABLE$" 
    /bin/ln -sfh /Users/$REDACTED_USER$/Library/Developer/Xcode/DerivedData/Seta-ctfzptralingvtbxhssdlkkzkclw/Build/Intermediates/ArchiveIntermediates/Seta/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/$REDACTED_WATCHKIT_EXTENSION_TARGET_NAME$.appex /Users/$REDACTED_USER$/Documents/$REDACTED_PATH$/build/$REDACTED_WATCHKIT_EXTENSION_TARGET_NAME$.appex 

was in Ordnung zu sein scheint, aber irgendwie, dass Symlink endet im Inneren des .ipa oben, die falsch ist. Dies geschieht nach Erstellen der Produktstruktur und vor CompileSwiftSources während des Build-Zielschritts der Watchkit-Erweiterung.

Alle Hinweise oder Hilfe wird sehr geschätzt. Ich benutze Xcode 7.1.

+0

Überprüfen Sie diese [Antwort] (http://stackoverflow.com/questions/13399864/adding-asymbolic-link-in-the-application-bundle), vielleicht hilft es Ihnen aus. – Granit

+0

Danke für die Hilfe, ich habe bereits die Antwort überprüft, aber es hat nichts mit unserem Problem zu tun, wir haben diese Problemumgehung von Anfang an nie benutzt. – Ruenzuo

+0

Haben Sie versucht, den gesamten Code in das leere Projekt zu verschieben, in dem das Problem nicht auftritt? – Locksleyu

Antwort

2

Wir hatten ein DTS-Ticket zu nutzen, und wir erhalten die folgende Antwort von Apple:

Thank you for contacting Apple Developer Technical Support (DTS). 

The issue seems to happen when you pass CONFIGURATION_BUILD_DIR=$PWD/build to the xcodebuild command. Instead, try removing CONFIGURATION_BUILD_DIR from the xcodebuild command, and instead, change your build location in your Workspace settings. Follow these steps: 

1. In the xcodebuild command, remove CONFIGURATION_BUILD_DIR=$PWD/build 
2. Open your Workspace in Xcode 
3. Select File > Workspace Settings 
4. Click the Advanced button 
5. Select Custom > Relative to Workspace 
6. Click the Done buttons 

This will cause the build products to still go in your build directory, and the symlink in the WatchKit Extension is no longer created. 

Das heißt, die traurige Sache funktioniert, ist, dass diese Einstellungen von Kommandozeilen-Tools angewendet werden kann, nicht, wird Xcode zu schaffen eine Datei auf dem folgenden Pfad:

Project.workspace/xcuserdata/$USER.xcuserdatad/WorkspaceSettings.xcsettings 

und natürlich wollen Sie nicht, dass der Pfad zu Ihrem VCS hinzuzufügen, so habe ich einen kleinen ruby-Skript für unsere CI der richtigen Einstellungen hinzuzufügen und vermeiden Sie:

settingsFilePath = "#{ENV["PWD"]}/Project.xcworkspace/xcuserdata/#{ENV["USER"]}.xcuserdatad" 
FileUtils.mkpath(settingsFilePath) 

settings = {'BuildLocationStyle' => 'CustomLocation', 'CustomBuildIntermediatesPath' => 'Build/Intermediates', 'CustomBuildLocationType' => 'RelativeToWorkspace', 'CustomBuildProductsPath' => 'Build/Products'} 
File.open("#{settingsFilePath}/WorkspaceSettings.xcsettings", 'w') { |file| file.write(settings.to_plist) } 
0

Versuchen Sie direkt Ihre .xcarchive Datei zu öffnen (window-> organizer-> Archiv auswählen-> rechter Mausklick-> im Finder anzeigen).

Finden Sie alle Symlinks und versuchen Sie zu verstehen, warum sie dort erscheinen.

Dies kann ein Problem sein, das mit cocaapods zusammenhängt (wenn Sie Pods verwenden). Versuchen Sie, die Cocoapoden zu aktualisieren.

+0

Ich habe dies bereits getan, der Symlink ist da und ich habe den Build-Schritt gefunden, wo er im xcodebuild Log erstellt wurde, ich kann einfach nicht verstehen, warum xcodebuild diesen Symlink erstellt. – Ruenzuo

Verwandte Themen