2015-10-30 10 views
11

Non sono sicuro se questo è il posto giusto per chiederlo, quindi mi dispiace se sto usando la sezione sbagliata. Stiamo avendo problemi che hanno presentato la nostra applicazione per iTunes Connect, l'e-mail che abbiamo ottenuto, dice:Binario respinto perché link simbolico non valido, qualche idea?

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. 

ho cercato di riprodurre l'errore con la creazione di un progetto di Xcode vuoto con le stesse impostazioni nostro progetto, ma non ho potuto ottenere lo stesso errore da iTunes Connect. Qualcuno ha qualche idea del motivo per cui questo link simbolico viene creato? Ho controllato il progetto vuoto .ipa e non contiene quel link simbolico in quel percorso, quindi è evidentemente sbagliato ma non riesco a trovare l'impostazione/configurazione di build che sta creando il collegamento simbolico.

ho controllato l'uscita xcodebuild e ho trovato questo:

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 

che sembra andare bene, ma in qualche modo che link simbolico finisce all'interno della .ipa che è sbagliato. Ciò si verifica dopo la creazione della struttura del prodotto e prima di CompileSwiftSources durante il passaggio di destinazione della build estensione estensione watchkit.

Qualsiasi suggerimento o aiuto è molto apprezzato. Sto usando Xcode 7.1.

+0

Dai un'occhiata a questo [risposta] (http://stackoverflow.com/questions/13399864/adding-a-symbolic-link-in-the-application-bundle), forse ti aiuta. – Granit

+0

Grazie per l'aiuto, ho già controllato la risposta ma non è correlata al nostro problema, non abbiamo mai usato questa soluzione alternativa in primo luogo. – Ruenzuo

+0

Hai provato a spostare tutto il codice sul progetto vuoto che non ha il problema? – Locksleyu

risposta

2

Abbiamo dovuto usare un biglietto DTS e abbiamo ricevuto la seguente risposta di 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. 

che funziona, la cosa triste è che queste impostazioni non possono essere applicati da strumenti da riga di comando, Xcode è la creazione di un file nel seguente percorso:

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

e ovviamente, non si vuole aggiungere che percorso dei VCS, così ho creato un piccolo script ruby ​​per il nostro CI per aggiungere le impostazioni corrette ed evitare questo:

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

Prova ad aprire direttamente il tuo file .xcarchive (finestra-> organizer-> seleziona archivio-> tasto destro-> mostra nel Finder).

Trova tutti i collegamenti simbolici e cerca di capire perché stanno comparendo lì.

Questo può essere un problema relativo ai cocoapod (se si utilizzano i pod). Prova ad aggiornare i cocoapodi.

+0

Ho già fatto questo, il link simbolico è lì e ho trovato il passo di creazione in cui è stato creato nel registro xcodebuild, non riesco proprio a capire perché xcodebuild sta creando quel collegamento simbolico. – Ruenzuo