2016-09-14 17 views
9

Moja aplikacja działa poprawnie na urządzeniach & symulatorów, ale po jej przesłaniu otrzymuję nieprawidłowy pakiet - jedna lub więcej dynamicznych bibliotek, do których istnieją odnośniki przez twoją aplikację nie są obecne w ścieżce wyszukiwania dylib błąd wysłany do mnie około pół godziny po pomyślnym zakończeniu przesyłania.Nieprawidłowy błąd pakietu z iTC, nie można przesłać aplikacji - ponieważ 4 szybkie dylibs nie mogą osadzić

Po porady na temat tego thead here, mianowicie systemem otool -L, widzę, że główny plik wykonywalny Aplikacja zawiera wszystkie jej @rpath/...dylib plików w folderze Frameworks/ zgodnie z oczekiwaniami, ale, wykonywalny appex jest brak kilku Swift bibliotekami.

Oto wyjście z otool -L na appex:

Watch Extension: 
    /System/Library/Frameworks/WatchKit.framework/WatchKit (compatibility version 1.0.0, current version 1.0.0) 
    /System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current version 1349.0.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.0.0) 
    /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation (compatibility version 150.0.0, current version 1348.0.0) 
    /System/Library/Frameworks/UIKit.framework/UIKit (compatibility version 1.0.0, current version 3599.4.0) 
    /System/Library/Frameworks/WatchConnectivity.framework/WatchConnectivity (compatibility version 1.0.0, current version 116.0.0) 
    @rpath/libswiftCore.dylib (compatibility version 1.0.0, current version 800.0.46) 
    @rpath/libswiftCoreGraphics.dylib (compatibility version 1.0.0, current version 800.0.46) 
    @rpath/libswiftCoreLocation.dylib (compatibility version 1.0.0, current version 800.0.46) 
    @rpath/libswiftDarwin.dylib (compatibility version 1.0.0, current version 800.0.46) 
    @rpath/libswiftDispatch.dylib (compatibility version 1.0.0, current version 800.0.46) 
    @rpath/libswiftFoundation.dylib (compatibility version 1.0.0, current version 800.0.46) 
    @rpath/libswiftHomeKit.dylib (compatibility version 1.0.0, current version 800.0.46) 
    @rpath/libswiftObjectiveC.dylib (compatibility version 1.0.0, current version 800.0.46) 
    @rpath/libswiftSceneKit.dylib (compatibility version 1.0.0, current version 800.0.46) 
    @rpath/libswiftUIKit.dylib (compatibility version 1.0.0, current version 800.0.46) 
    @rpath/libswiftWatchKit.dylib (compatibility version 1.0.0, current version 800.0.46) 
    @rpath/libswiftsimd.dylib (compatibility version 1.0.0, current version 800.0.46) 

Poniższy NIE są w folderze Frameworks/ (ale wszyscy inni są):

@rpath/libswiftHomeKit.dylib (compatibility version 1.0.0, current version 800.0.46) 
    @rpath/libswiftSceneKit.dylib (compatibility version 1.0.0, current version 800.0.46) 
    @rpath/libswiftWatchKit.dylib (compatibility version 1.0.0, current version 800.0.46) 
    @rpath/libswiftsimd.dylib (compatibility version 1.0.0, current version 800.0.46) 

Dlaczego tak jest? Zregenerowałem swój projekt strąków przez pod install, nic nie zmieniłem. Nie widziałem żadnych ostrzeżeń. Sprawdziłem dane wyjściowe dziennika budowania (archiwum), bez ostrzeżeń. Jak mogę je uwzględnić, tak jak powinny być?

W głównym celu mojej aplikacji, Zawsze umieść standardowe biblioteki Swift jest ustawione na tak. W przypadku funkcji Appex Watch i Watch wartość ta jest ustawiona na no, aby uniknąć odrzucenia z powodu duplikatów (dobrze). Próbowałem ustawić EMBEDDED_CONTENT_CONTAINS_SWIFT na yes w moim appex, jak opisano w tym innym wątku, ale to nie robi żadnej różnicy.

Aktualizacja 1 - Nie mogę również eksportować jako kompilacji ADHOC z organizera xcode, z tego samego powodu nie działa na etapie "kompilacji bitu". Ścieżki wyszukiwania Runtime są ustawione tak:

Runtime search paths in build settings

Oto fragment dziennika z nieudanego eksportu, jakieś pomysły jak rozwiązać te? Nie widzę powodu, dla którego brakuje tych bibliotek.

Debug: Command took 0 seconds 
    Debug: Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/System/Library/Frameworks/WatchKit.framework/WatchKit.tbd 
    Debug: Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/System/Library/Frameworks/Foundation.framework/Foundation.tbd 
    Debug: Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/usr/lib/libobjc.A.tbd 
    Debug: Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/usr/lib/libSystem.B.tbd 
    Debug: Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation.tbd 
    Debug: Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/System/Library/Frameworks/UIKit.framework/UIKit.tbd 
    Debug: Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/System/Library/Frameworks/WatchConnectivity.framework/WatchConnectivity.tbd 
    Debug: Found framework/dylib: /Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/usr/lib/libobjc.A.tbd 
    Debug: Search Path: ['/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/lib/darwin', '/Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/usr/lib', '/Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/System/Library/Frameworks'] 
    error: libswiftCore.dylib not found in dylib search path 


Stderr: 
    from /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool:1974:in `block in CompileOrStripBitcodeInBundle' 
    from /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool:1931:in `each' 
    from /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool:1931:in `CompileOrStripBitcodeInBundle' 
    from /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool:1921:in `block in CompileOrStripBitcodeInBundle' 
    from /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool:1920:in `each' 
    from /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool:1920:in `CompileOrStripBitcodeInBundle' 
    from /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool:2106:in `ProcessIPA' 
    from /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool:2674:in `<main>' 
2016-09-14 15:33:40 +0000 /Applications/Xcode.app/Contents/Developer/usr/bin/ipatool exited with 1 
2016-09-14 15:33:40 +0000 ipatool JSON: { 
    alerts =  (
      { 
     code = 2554; 
     description = "Configuration issue: platform AppleTVSimulator.platform doesn't have any non-simulator SDKs; ignoring it"; 
     info =    { 
     }; 
     level = WARN; 
    }, 
      { 
     code = 2554; 
     description = "Configuration issue: platform iPhoneSimulator.platform doesn't have any non-simulator SDKs; ignoring it"; 
     info =    { 
     }; 
     level = WARN; 
    }, 
      { 
     code = 2554; 
     description = "Configuration issue: platform WatchSimulator.platform doesn't have any non-simulator SDKs; ignoring it"; 
     info =    { 
     }; 
     level = WARN; 
    }, 
      { 
     code = 284; 
     description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftCore.dylib: Could not find image to link for armv7k in /private/var/folders/yl/mw_r1p4j3vj2mfp32rqs0y7r0000gn/T/XcodeDistPipeline.6Tu/Root/Payload/Photobooth.app/Frameworks/libswiftCore.dylib"; 
     info =    { 
     }; 
     level = WARN; 
    }, 
      { 
     code = 284; 
     description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftCoreGraphics.dylib: Could not find image to link for armv7k in /private/var/folders/yl/mw_r1p4j3vj2mfp32rqs0y7r0000gn/T/XcodeDistPipeline.6Tu/Root/Payload/Photobooth.app/Frameworks/libswiftCoreGraphics.dylib"; 
     info =    { 
     }; 
     level = WARN; 
    }, 
      { 
     code = 284; 
     description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftCoreLocation.dylib: Could not find image to link for armv7k in /private/var/folders/yl/mw_r1p4j3vj2mfp32rqs0y7r0000gn/T/XcodeDistPipeline.6Tu/Root/Payload/Photobooth.app/Frameworks/libswiftCoreLocation.dylib"; 
     info =    { 
     }; 
     level = WARN; 
    }, 
      { 
     code = 284; 
     description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftDarwin.dylib: Could not find image to link for armv7k in /private/var/folders/yl/mw_r1p4j3vj2mfp32rqs0y7r0000gn/T/XcodeDistPipeline.6Tu/Root/Payload/Photobooth.app/Frameworks/libswiftDarwin.dylib"; 
     info =    { 
     }; 
     level = WARN; 
    }, 
      { 
     code = 284; 
     description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftDispatch.dylib: Could not find image to link for armv7k in /private/var/folders/yl/mw_r1p4j3vj2mfp32rqs0y7r0000gn/T/XcodeDistPipeline.6Tu/Root/Payload/Photobooth.app/Frameworks/libswiftDispatch.dylib"; 
     info =    { 
     }; 
     level = WARN; 
    }, 
      { 
     code = 284; 
     description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftFoundation.dylib: Could not find image to link for armv7k in /private/var/folders/yl/mw_r1p4j3vj2mfp32rqs0y7r0000gn/T/XcodeDistPipeline.6Tu/Root/Payload/Photobooth.app/Frameworks/libswiftFoundation.dylib"; 
     info =    { 
     }; 
     level = WARN; 
    }, 
      { 
     code = 284; 
     description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftHomeKit.dylib: Could not resolve @rpath in @rpath/libswiftHomeKit.dylib from Watch Extension"; 
     info =    { 
     }; 
     level = WARN; 
    }, 
      { 
     code = 284; 
     description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftObjectiveC.dylib: Could not find image to link for armv7k in /private/var/folders/yl/mw_r1p4j3vj2mfp32rqs0y7r0000gn/T/XcodeDistPipeline.6Tu/Root/Payload/Photobooth.app/Frameworks/libswiftObjectiveC.dylib"; 
     info =    { 
     }; 
     level = WARN; 
    }, 
      { 
     code = 284; 
     description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftSceneKit.dylib: Could not resolve @rpath in @rpath/libswiftSceneKit.dylib from Watch Extension"; 
     info =    { 
     }; 
     level = WARN; 
    }, 
      { 
     code = 284; 
     description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftUIKit.dylib: Could not find image to link for armv7k in /private/var/folders/yl/mw_r1p4j3vj2mfp32rqs0y7r0000gn/T/XcodeDistPipeline.6Tu/Root/Payload/Photobooth.app/Frameworks/libswiftUIKit.dylib"; 
     info =    { 
     }; 
     level = WARN; 
    }, 
      { 
     code = 284; 
     description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftWatchKit.dylib: Could not resolve @rpath in @rpath/libswiftWatchKit.dylib from Watch Extension"; 
     info =    { 
     }; 
     level = WARN; 
    }, 
      { 
     code = 284; 
     description = "Failed to resolve linkage dependency Watch Extension armv7k -> @rpath/libswiftsimd.dylib: Could not resolve @rpath in @rpath/libswiftsimd.dylib from Watch Extension"; 
     info =    { 
     }; 
     level = WARN; 
    }, 

Odpowiedz

15

zajęło 12 godzin, aby dowiedzieć się tego, ale to jest to, co stałe - zmiana ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES build ustawienie tak:

cel App (główny cel) - ustawiony na NO (kopalnia była TAK)

Watch kierować - ustawiony na tak (mój był NO)

Watch App Extension kierować - ustawiony na NO (mój był YES)

Edit: I zdobione to tworząc nowy, pusty projekt zegarka w Xcode 8 i odsyłaczy różnic pomiędzy osadem ustawień w nowym Xcode 8 projekt szablonu i mój stary starożytny, chrupiący projekt. Powyższe ustawienia są tym, co ma projekt szablonu xcode 8.

+0

Gdzie w ogóle używasz Cocoapods? Mam ten sam błąd, ale szybkie biblioteki wydają się poprawne w moim przypadku. Próbowałem również flagi '$ (odziedziczona) 'na sugeruje komunikat ostrzegawczy strąków kakao. Mam 3 dzień walki z tym. :( – kev

+0

@kev: tak, proponuję utworzyć nowy pusty projekt w xcode 8 i porównać różnice w ustawieniach kompilacji z projektu new/template z istniejącym, co może pokazać, z których ustawień można eksperymentować. 'update klejnotów cocoapods' na wypadek, gdybyś tego ostatnio nie zrobił – xaphod

+0

To zadziałało dla mnie W moim przypadku zostawiłem ustawioną wartość docelową aplikacji na TAK Jedynym problemem było to, że cel Obserwacji musiał zostać zmieniony na TAK, Aplikacja zegarka zawiera także Swift. – robotspacer

4

Chciałem opracować moje doświadczenia z tym zagadnieniem, aby, mam nadzieję, uratować kogoś innego, jeśli się na to natkną.

Tło:

  1. Starsze projekt pochodzi z iOS 8 WatchOS 1.0 App i dziś Extension
  2. Aktualizacja aplikacji z Swift Swift 1.0 do 3.0.1, zaktualizowane cel iOS od 8 do 10, watchOS od 1,0 do 3,0
  3. Rozpoczęcie korzystania z tej Cocoa Pods odświeżenia, nie był pierwotnie

@xaphod miał brakuje bibliotek, kiedy wpadłem Wszystkie biblioteki wyglądały poprawnie w każdym z celów.

Po wielu odrzuconych plików binarnych I wreszcie:

  1. zainstalowanych Cocoapods z projektu, jak suggested here
  2. Zaktualizowane Cocoapods do najnowszej, non-beta, wersja
  3. ponownej instalacji Cocoapods, cele redukcji strąk z aplikacji , obejrzyj aplikację, obejrzyj rozszerzenie, dziś rozszerzenie i przetestuj cele na po prostu aplikacji (ponieważ główna aplikacja była tylko rzeczą korzystającą z pods)
  4. następnie @xaphod sugestia pisał tutaj, aby utworzyć nowy projekt szablonu (bez użycia strąków) i porównano budować ustawienia, szczególnie ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
  5. Ustaw ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES

Główne App Kieruj = $(inherited) za strąki kakao ostrzeżenie sugerować. Ta wartość domyślna to YES i jest faktycznie wyświetlana jako YES - $(inherited) w Xcode. Wreszcie EMBEDDED_CONTENT_CONTAINS_SWIFT = YES za ustawieniach strączkowych, które wykonują strąki Ci

Watch App = YES

Watch Extension = NO

Dziś Extension = NO

Przed powyższych ustawień, Próbowałem $(inherited) dla wszystkiego, by zadowolić kakao. To była wyraźnie zła decyzja życiowa.

W końcu stwierdziłem, że próba eksportu jako AD HOC zakończy się niepowodzeniem, jeśli plik binarny nie zostanie zaakceptowany przez iTunes Connect, więc mógłbym zaoszczędzić czas na testowanie teorii przed wyrzuceniem kompilacji w Apple. Podjęto próbę porównania udanego pliku binarnego z błędnym, ale naprawdę nie widziałem niczego szczególnego, co wyróżniało mnie na różnicy.

Nadal nie czuję się w 100% komfortowo z tym, jak to działa, ale szczęśliwy, że mogę w końcu przesłać plik binarny. Pozdrawiam i powodzenia!

0

Awesome, poznałem ten sam problem

spojrzeć swój Embeded Binaries Section, jeśli można zobaczyć kilka bezwzględną ścieżkę w ścieżce referencyjnej. Możesz usunąć szkielet z drzewa projektu po lewej stronie i ponownie dodać framework. Upewnij się, że ścieżka to ..in build/Debug-iphoneos

Życzę powodzenia!

Powiązane problemy