2015-05-15 11 views
16

Mam ramkę Cocoa Touch zbudowaną z XCode 6 skierowaną w stronę iOS> = iOS8. Ustawienia architektury docelowej tego systemu są domyślne, co oznacza, że ​​nic nie zmieniłem. Architektury są ustawione na standardowe (co nie obejmuje x86_64, więcej o tym później). Sam szkielet zawiera kod Swift i Objective-C, więc tworzenie go przy użyciu obejścia biblioteki statycznej z programu Ray Wenderlich nie będzie działać.Cocoa Touch Framework nie debuguje na symulatorze w projekcie osadzania

Teraz, jeśli utworzę nowy projekt i dodaję do niego projekt ramowy, projekt będzie budowany dla urządzenia i symulatora, co jest w porządku.

Jeśli jednak wziąłbym plik .framework i dodałem go do innego projektu, tak jak w przypadku dodania jakiegokolwiek innego frameworka, projekt nie będzie budowany dla symulatora. Cóż, buduje, ale ulega awarii, ponieważ nie może znaleźć odpowiednich klas. Działa dobrze na urządzeniu i archiwizacja działa zgodnie z oczekiwaniami.

Już sam projekt ramowy daje mi ostrzeżenie; "Ostrzeżenie Apple Link-Linker - Nie znaleziono katalogu dla opcji .... (Debug-ophoneos)".

Każda pomoc będzie bardzo ceniona!

Odpowiedz

7

W końcu znalazłem rozwiązanie tego problemu. Okazuje się, że XCode już nie tworzy plików binarnych zawierających tłuszcz. Nie mam pojęcia, co to może być za tym rozumowanie Apple'a, wydaje mi się, że czasami ludzie odpowiedzialni za XCode lubią żartować z twórców używających ich produktów ...

W każdym razie, można znaleźć ostateczny przewodnik, jak Aby utworzyć gruby plik binarny dla symulatora i wszystkich urządzeń z systemem iOS (tak, musisz nawet lipo różnych architektur, aby uzyskać framework, który działa na nowszych i starszych urządzeniach): https://kodmunki.wordpress.com/2015/03/04/cocoa-touch-frameworks-for-ios8-remix/

W skrócie;

  • Tworzenie kakao Framework dotykowego
  • Ustaw architektur arm64, ARMv7 i armv7s
  • Set "Budowanie Aktywna architektura" na "Nie"
  • ustaw "Prawidłowe Architektury" do arm64, armv1, i armv7s
  • Dodaj następujący skrypt do schematu kompilacji systemu jako archiwum Post-action;

    zestaw -e

    DEVICE_BIN = "$ {OBJROOT}/UninstalledProducts/$ {TARGET_NAME} .framework" SIMULATOR_BIN = "$ {} /../../../../ Produkty SYMROOT/Debugowanie - iphonesimulator/$ {TARGET_NAME}.Ramy”

    ARCHIVE_PATH = "$ {SRCROOT}/_ Archive" rm -rf "$ {ARCHIVE_PATH}" mkdir "$ {ARCHIVE_PATH}"

    if [ "$ {Konfiguracja}"= "Release" ], a następnie

    jeżeli [-d "$ {DEVICE_BIN}"], a następnie DEVICE_PATH = "$ {ARCHIVE_PATH}/uwalnianie" mkdir "$ {DEVICE_PATH}" CP R "$ {DEVICE_BIN}" " $ {DEVICE_PATH} " fi jeśli [-d" $ {SYMULATOR_BIN} "], następnie SIMULATOR_PATH =" $ {ARCHIVE_PATH}/Debugowanie " mkdir "$ {SYMULATOR_PATH}" cp -r "$ {DEVICE_BIN}" "$ {SYMULATOR_PATH}" lipo -twórz "$ {DEVICE_BIN}/$ {TARGET_NAME}" "$ {SYMULATOR_BIN}/$ {TARGET_NAME}" -Output "$ {SIMULATOR_PATH}/{$} .framework nazwa_celu/$ {nazwa_celu}"

    fi

    fi

    wyjście 0;

Spowoduje to utworzenie katalogu _Archive w katalogu projektu, w którym można znaleźć frameworki zarówno do debugowania, jak i wydania.

Ważne: Na dzień dzisiejszy (22 maja 2015 r.) Należy najpierw zbudować projekt za pomocą symulatora, a następnie zarchiwizować za pomocą urządzenia. W przeciwnym razie nie otrzymasz uniwersalnego pliku binarnego!

Ten post został utworzony w celu uniknięcia nieumyślnych błędów linków, aktualizacji dotyczących procesu pakowania. ZAWSZE spróbuj wykonać czynności opisane na stronie kodmunki, które mam powyżej, ponieważ kroki w tym wpisie mogły być nieaktualne już!

+0

"Jak się okazuje, XCode nie tworzy już plików binarnych zawierających tłuszcz." Xcode nigdy nie zrobił dla symulatora i urządzenia. Są to dwa różne pakiety SDK. – quellish

Powiązane problemy