2016-07-30 44 views
5

proszę spojrzeć na zdjęcie: enter image description hereramach zmieniła się po projekt przeniósł się do innego miejsca

To moja struktura projektu:

  1. 1 aplikacja (górna)
  2. 3 ramy (tworzenie przez siebie) strąki
  3. 1 kakao bibliotekę statyczną (dolny)

Gdy cmd + b, wszystkie projekty podrzędne będą budowane od najniższego do najwyższego, tutaj nie ma problemu, wszystko jest w porządku.

  • Odnosząc/link ram, wpadnę produkt ramowej każdy sub projektu/Budowanie Fazy/link binarnych z bibliotek i/Budowanie Fazy/kopiowanie plików.

Problemem jest:

  • Kiedy skopiować/przenieść folder projektu do innego miejsca (jak ~/oldFolder/app do ~/Newfolder/app) projekt sub nie znajdzie ramy, raport Nie znaleziono błąd, potrzebuję ponownie zbudować i upuść produkt ramy, aby połączyć, aby naprawić błąd.

To zbyt głupi i ciężko pracować z innymi ludźmi, ktoś może pomóc?

p.s .: przepraszam za mój słaby angielski.

dodawania błąd pic: enter image description here

+0

Musisz przejść do ustawień kompilacji i podać ścieżki względne dla twoich bibliotek - a nie ścieżki asbolute. –

+0

jak to zrobić? – Raniys

+0

Kliknij przycisk "Utwórz ustawienia" i spójrz na ścieżki, które są aktualnie ustawione dla twoich frameworków. –

Odpowiedz

2

Można użyć $ (SRCROOT), jeśli chcesz odnieść ścieżek względnych do katalogu źródłowego. $ (SRCROOT) wskaże gdzie są twoje pliki projektu. apple doc

Przykład:

jeśli masz Katalog X w folderze MojaApl który zawiera plik projektu następnie folder x może być reffered jak $ (SRCROOT)/x. Wprowadź to w sekcji ścieżki struktury w Ustawieniach kompilacji, aby odnieść się do biblioteki.

+0

Ścieżka budowania frameworku jest domyślna przez XCode, więc ścieżka nie jest ścieżką niestandardową. Zobaczysz: Per-configuration Build Product Path => $ (BUILD_DIR)/$ (CONFIGURATION) $ (EFFECTIVE_PLATFORM_NAME) – Raniys

+0

Czy możesz podać próbkę tego ustawienia? dzięki. – Raniys

+0

Witaj, musisz tylko przejść do folderu lokalizacji w twoim frameworku, Przenieś lub skopiuj swój framework do swojego folderu źródłowego pod swoim projektem, a następnie przejdź do ustawień kompilacji i zmień ścieżkę do: $ (SRCROOT)/"yourframeworkfoldername" –

1

Wszystko sprowadza się do tego, że nie można zmienić lokalizacji już zaimportowanych frameworków? To jest przykład z FBSDKCoreKit.framework. Gdybym miał zmienić lokalizację folderu, musiałbym zmienić względną ścieżkę. Kliknij na ikonę folderu obok nazwy i wybrać nową lokalizację

enter image description here

+0

To nie jest tak naprawdę. Powinien to być problem z ustawieniami kompilacji. Muszę wiedzieć, jak ustawić dynamiczną ścieżkę odwołania struktury w Ustawieniach kompilacji. BTW, Twoja próba wygląda, że ​​użyłeś tej samej struktury projektu co moja? Czy możesz mi udostępnić próbkę? Dzięki. – Raniys

+0

@Raniys Czy próbowałeś tego, co sugerowałem? W każdym razie innym sposobem rozwiązania tego problemu jest całkowite usunięcie frameworka z Xcode, a następnie przeciągnięcie i upuszczenie go ponownie z opcjami "Kopiuj elementy, jeśli to konieczne" i "Dodaj do celu", które są aktywne. A to nie jest szablon? Chyba, że ​​masz na myśli coś innego z szablonem. To jest moja aplikacja, która po prostu używa FBSDKCore & LoginKit – tech4242

+0

Tak, twoja metoda "przeciągnij i upuść" jest tym, co zrobiłem, ale myślę, że nie jest dobra. Dlatego chcę znaleźć inne rozwiązanie do ustawienia ścieżki dynamicznej na stronie Ustawienia budowania. Dokładnie, potrzebuję kodowania projektu w moim biurze i domu na innym komputerze, więc metoda "przeciągnij i upuść" pozwoliła mi się zasmucić. – Raniys

0

zaksięgować szczegół, jak rozwiązać ten problem na mojej stronie tutaj:

  • w ramowych:
    1. zestaw "$ (SRCROOT)/../ Build”w pozycji "Path Per-konfiguracji tworzenie produktów" na stronie ustawień budowy;
    2. Shift + Cmd + k, aby oczyścić build ramowego następnie cmd + b odbudować ram;
  • W MojaApl
    1. dodać "$ (SRCROOT) /../ build" w pozycji "ramowa Search Path" w stronę Setting budowy;
    2. przeciągnij ramy z produktu z ramowego projektu "link do binarne z bibliotekami" w Strony fazy budowy:
    3. Przeciągnij e framework od iloczynu projektu ramowego do "Copy Files" na stronie Build Phases (możesz dodać element "Copy Files" przez kliknij lewą górą strony Build Phases);

Należy pamiętać, jeśli używasz jedno ramy, w ramach tego samego projektu, a ramy również linki do innego jak próby wysłałem moje pytanie, trzeba także wykonać wszystkie kroki jak wyżej I opublikowane (Kroki Framework i App).


Innym problemem można spotkać jeśli użyć także cocoapods w projekcie jak mój próbki: Po zrobić wszystkie powyższe kroki, XCode będzie błąd odpowiedź w projekcie ramowego jak:

ld: framework not found Pods_xxx.framework

clang: error: linker command failed with exit code 1 (use -v to see invocation)

The "xxx" powinno być twoją nazwą projektu ramowego. Aby to naprawić, wystarczy usunąć Pods_xxx.framework w swoim projekcie /General/Linked Frameworks and Biblioteki. Błąd zniknie po przebudowaniu projektu. Here możesz znaleźć szczegóły tego problemu.

p.s.: the Pods_xxx.framework will appear in General/Linked Frameworks and Libraries after you install pod, so you need remove it again if you run command "pod install"