2015-10-30 15 views
11

Nie jestem pewien, czy to właściwe miejsce, aby o to zapytać, więc przepraszam, jeśli używam niewłaściwej sekcji. Mamy kłopoty wypełnij nasz aplikację iTunes Connect, e-mail dostaliśmy mówi:Binarne odrzucone, ponieważ nieprawidłowe dowiązanie symboliczne, jakieś pomysły?

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. 

Starałem się odtworzyć błąd tworząc pusty projekt Xcode z tymi samymi ustawieniami jak naszego projektu, ale nie mogłem uzyskać ten sam błąd z iTunes Connect. Czy ktokolwiek ma pojęcie, dlaczego tworzone jest dowiązanie symboliczne? Sprawdziłem pusty projekt .ipa i nie zawiera on tego dowiązania symbolicznego w tej ścieżce, więc jest to oczywiście błędne, ale nie mogę znaleźć ustawienia/konfiguracji kompilacji, które tworzą dowiązanie symboliczne.

Sprawdziłem wyjścia xcodebuild i znalazłem to:

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 

który wydaje się być w porządku, ale jakoś to dowiązanie kończy się wewnątrz .ipa co jest źle. Dzieje się tak po utworzeniu struktury produktu i przed CompileSwiftSources podczas kroku docelowego kompilacji rozszerzenia watchkit.

Wszelkie wskazówki i pomoc są mile widziane. Używam Xcode 7.1.

+0

Sprawdź to [odpowiedź] (http://stackoverflow.com/questions/13399864/adding-a-symbolic-link-in-the-application-bundle), może to ci pomoże. – Granit

+0

Dzięki za pomoc, już sprawdziłem odpowiedź, ale nie jest to związane z naszym problemem, nigdy nie używaliśmy tego obejścia. – Ruenzuo

+0

Czy próbowałeś przenieść cały swój kod do pustego projektu, który nie ma problemu? – Locksleyu

Odpowiedz

2

Musieliśmy użyć bilet DTS i otrzymaliśmy następującą odpowiedź od 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. 

To działa, smutne jest to, że ustawienia nie można nakładać za pomocą narzędzi wiersza poleceń, Xcode jest tworzenie plik w następującej ścieżce:

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

i oczywiście, że nie chcesz, aby dodać tę ścieżkę do VCS, więc stworzyłem mały skrypt ruby ​​dla naszego CI dodać odpowiednie ustawienia i uniknąć tego:

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

Spróbuj otworzyć bezpośrednio swój plik .xcarchive (okno-> organizer-> wybierz archiwum-> prawy przycisk myszy-> pokaż w wyszukiwarce).

Znajdź dowolne dowiązania symboliczne i spróbuj zrozumieć, dlaczego one się tam pojawiają.

Może to być problem związany z cocoapods (jeśli używasz strąków). Spróbuj zaktualizować cocoapods.

+0

Zrobiłem to już, znajduje się dowiązanie symboliczne i znalazłem krok kompilacji, w którym został utworzony w dzienniku xcodebuild, po prostu nie mogę zrozumieć, dlaczego xcodebuild tworzy to dowiązanie symboliczne. – Ruenzuo