Jak mogę wdrożyć aplikację na iPhone'a z Xcode na prawdziwym urządzeniu iPhone?

157

Jak mogę wdrożyć aplikację na iPhone'a z Xcode na prawdziwym urządzeniu iPhone bez posiadania certyfikatu Apple 99 USD?

DFG
źródło
Zobacz tę odpowiedź na pytanie, które zadałem wcześniej, aby uzyskać bardzo dobry przewodnik, jak umieścić go na swoim jailbreakowanym iPhonie.
Dan Walker
2
Xcode 7 ma teraz bezpłatną obsługę administracyjną, więc nie ma potrzeby zakładania konta programisty Apple, aby testować aplikacje na prawdziwym urządzeniu. Zobacz tę odpowiedź, aby uzyskać więcej informacji.
Suragch

Odpowiedzi:

56

Wygląda na to, że aplikacja nie jest podpisana. Pobierz ldid z Cydii, a następnie użyj go w następujący sposób:ldid -S /Applications/AccelerometerGraph.app/AccelerometerGraph

Upewnij się również, że plik binarny jest oznaczony jako wykonywalny: chmod +x /Applications/AccelerometerGraph.app/AccelerometerGraph

rpetrich
źródło
3
Tak, musisz jailbreakować swoje urządzenie, aby ta metoda działała. (oczywiście)
esqew
jak uruchomić polecenie ldid -S ...? czy potrzebujesz do tego konsoli SSH? czy jest jakiś darmowy sposób na uzyskanie klienta SSH na telefonie iPhone z jailbreakiem?
Dan Leahu,
tanderson: w Cydii jest pakiet ldid i możesz go skompilować dla OS X
rpetrich
rpetrich Myślę, że jego pytania dotyczą tego, jak wpisać i użyć polecenia, a nie jak zdobyć paczkę. @tanderson możesz przejść przez Open SSH (a następnie połączyć się z telefonem z pulpitu) lub Terminal w samym iPhonie. Obie aplikacje można pobrać bezpłatnie z witryny Cydia . Dzięki SSH masz tę zaletę, że możesz go również użyć do prostego skopiowania aplikacji na telefon. Jeśli często to robisz, koniecznie sprawdź inne odpowiedzi - możesz sprawić, że XCode wykona za ciebie całą robotę, ale jest to kłopotliwa procedura, aby oszukać to robiąc to.
cregox
92

Użyłem mieszankę dwóch HOWTO: Jason i Alexa . W drugim mamy tę zaletę, że możemy debugować. Przeważnie po prostu skopiuję oba poniższe (i uproszczę alexa):

Aktualizacja ze stycznia 2012 r .: to nadal działa na SDK 4.2.1 i iOS 5.0.1 - właśnie przetestowałem to wszystko na nowym komputerze i urządzeniu!


1. Utwórz certyfikat z podpisem własnym

Popraw swój iPhone SDK, aby umożliwić korzystanie z tego certyfikatu:

  1. Uruchom aplikację Keychain Access.app. Gdy żadne elementy nie są zaznaczone, z menu Pęk kluczy wybierz Asystent certyfikatu, a następnie Utwórz certyfikat.

    • Imię: Programista iPhone
    • Typ certyfikatu: podpisywanie kodu
    • Pozwól mi zastąpić wartości domyślne: Tak
  2. Kliknij Kontynuuj

    • Ważność: 3650 dni
  3. Kliknij Kontynuuj

  4. Puste się na e-mail polu adresu.

  5. Kliknij Kontynuuj do zakończenia .

    Powinien pojawić się komunikat „Ten certyfikat główny nie jest zaufany” . To jest oczekiwane.

  6. Ustaw iPhone SDK, aby zezwolić na użycie certyfikatu z podpisem własnym:

    sudo /usr/bin/sed -i .bak 's/XCiPhoneOSCodeSignContext/XCCodeSignContext/' /Developer/Platforms/iPhoneOS.platform/Info.plist

    Jeśli masz otwarty Xcode, uruchom go ponownie, aby zmiana zaczęła obowiązywać.

A jeśli korzystasz z iOS 5, to wszystko! Spróbuj teraz! Może nie pozwalać na debugowanie, ale aplikacja będzie tam!

Byłem tym bardzo zaskoczony, ponieważ, jak powinieneś wiedzieć , nie mam pojęcia, o co chodzi w tych wszystkich włamaniach! Wszystko, co zrobiłem, to trochę ulepszyć to, co znalazłem gdzie indziej, jak wskazałem.

Więc tak, cała metoda nie działa już tak samo i nie mogłem zawracać sobie głowy znalezieniem nowej ... Poza tym, który używa narzędzia o nazwie Theos, ale nie mogłem przejść przez cały proces.

Wreszcie, jeśli z jakiegoś powodu chcesz go odinstalować , sprawdź koniec tego postu. W moim przypadku musiałem, ponieważ nie mogłem zrozumieć, dlaczego cała ta metoda przestała działać, i już nie mogłem się tym przejmować, ponieważ mamy już długo oczekiwaną licencję. (Cholerna liczba DUNS trwa tak długo ...)

.

.


.

.

.

2. Włącz Xcode do budowania na urządzeniu z jailbreakiem

  1. Na iPhonie z jailbreakiem zainstaluj aplikację AppSync , dodając źródło ** http://repo.hackyouriphone.org **

  2. Usuń wymagania SDK dotyczące znaku kodu i uprawnień (uwielbiam sed !):

    sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist
  3. Zwróć uwagę naiPhoneOS5.0.sdkczęść. Jeśli na przykład używasz zestawu SDK systemu iOS 4.2, po prostu zastąp go odpowiednio:

    sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist
  4. Zakończ usuwanie wymagań, instalując poprawki Xcode. Oznacza to edycję binarną:

    cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
    dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
    printf "\xc3\x26\x00\x00" >> working
    /bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
    /bin/mv working iPhoneOS\ Build\ System\ Support
    chmod a+x iPhoneOS\ Build\ System\ Support

    Jeśli masz otwarty Xcode, uruchom go ponownie, aby ta zmiana (i ostatnia) odniosła skutek.

  5. Otwórz „Projekt> Edytuj ustawienia projektu” (z menu). Kliknij kartę „Kompiluj” . Znajdź na liście „Tożsamość podpisywania kodu” i jej element podrzędny „Dowolne urządzenie iPhoneOS” i ustaw oba na wpis „Nie podpisuj kodu” :

    tekst alternatywny

    Po tym możesz cofnąć krok 3. Przynajmniej w moim przypadku poszło dobrze.

  6. Ustawienie Xcode do podpisywania kodu za pomocą naszego niestandardowego certyfikatu z podpisem własnym (pierwsze instrukcje). Ten krok prawdopodobnie można pominąć, jeśli nie chcesz mieć możliwości debugowania:

    mkdir /Developer/iphoneentitlements401
    cd /Developer/iphoneentitlements401
    curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
    mv gen_entitlements.txt gen_entitlements.py
    chmod 777 gen_entitlements.py

    Podłącz iPhone'a i otwórz Xcode. Otwórz okno> Organizator. Wybierz urządzenie z listy po lewej stronie i kliknij „Użyj do programowania”. Zostaniesz poproszony o zalogowanie się do witryny obsługi administracyjnej, kliknij Anuluj. Ma na celu ułatwienie legalnej obsługi administracyjnej, ale nie utrudnia nielegalnego braku obsługi administracyjnej.

    Teraz musisz wykonać tę ostatnią część dla każdego nowego projektu, który tworzysz . Przejdź do menu Projekt> Nowa faza budowy> Nowa faza budowy skryptu uruchamiania. W oknie skopiuj / wklej to:

    export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
    if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
    /Developer/iphoneentitlements401/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
    codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
    fi

.

.


.

.

Odinstalowywanie

W pierwszej części:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Info.plist.bak /Developer/Platforms/iPhoneOS.platform/Info.plist

Część druga:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist.bak /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist
sudo mv -f iPhoneOS\ Build\ System\ Support.original iPhoneOS\ Build\ System\ Support

jeśli wykonałeś krok 3 zamiast 2, po prostu odpowiednio go zmodyfikuj:

sudo mv -f /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist.bak /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist

reszta to po prostu cofanie tego, co zrobiłeś w XCode i usuwanie, /Developer/iphoneentitlements401/gen_entitlements.pyjeśli chcesz:

sudo rm -f /Developer/iphoneentitlements401/gen_entitlements.py
cregox
źródło
Próbowałem postępować zgodnie z tymi instrukcjami, ale teraz „Schemat” jest typu Mój Mac 64-bitowy i nie mam już opcji uruchomienia symulatora ani prawdziwego iPhone'a, więc nie mogę nawet przetestować kodu.
Używałem
1
Właściwie aktualizacja: po zmianie podstawowego SDK w ustawieniach projektu z iphoneos na iOS 4.3 wszystko działa. Chociaż xcode mówi „Błąd podczas uruchamiania programu zdalnego: nie udało się uzyskać zadania dla procesu”, mogę uruchomić aplikację, klikając ją.
nosatalian
1
Pojawia się ten błąd: The identity used to sign the executable is no longer valid. ... (0xE8008018) nawet po upływie 3650 dni do wygaśnięcia. Wygląda na to, że sam telefon sprawdza.
Stephen
czy ta sztuczka „łatania XCode” działa w 4.3.2, czy ją zepsuje
Gabor
1
Punkt 6. W moim przypadku musiałem zmienić uprawnienia do pliku /Developer/iphoneentitlements401/gen_entitlements.py, aby normalny użytkownik go wykonywał. Dzięki temu procedura działa idealnie.
abidibo
43

Bezpłatne udostępnianie po Xcode 7

Aby przetestować swoją aplikację na prawdziwym urządzeniu, zamiast płacić opłatę programistyczną Apple (lub jailbreakować urządzenie), możesz skorzystać z nowej bezpłatnej obsługi administracyjnej obsługiwanej przez Xcode 7 i iOS 9.

Oto kroki podjęte mniej więcej z dokumentacji (co jest całkiem dobre, więc przeczytaj):

1. Dodaj swój Apple ID w Xcode

Przejdź do XCode> Preferencje> karta Konta> przycisk Dodaj (+)> Dodaj Apple ID. Zobacz dokumentację, aby uzyskać dodatkową pomoc.

wprowadź opis obrazu tutaj

2. Kliknij zakładkę Ogólne w Nawigatorze projektu

wprowadź opis obrazu tutaj

3. Wybierz swój Apple ID z wyskakującego menu zespołu.

wprowadź opis obrazu tutaj

4. Podłącz urządzenie i wybierz je z menu schematu.

wprowadź opis obrazu tutaj

5. Kliknij przycisk Napraw problemy

wprowadź opis obrazu tutaj

Jeśli pojawi się błąd informujący, że nazwa pakietu jest nieprawidłowa, zmień ją na unikalną.

6. Uruchom aplikację

W Xcode kliknij przycisk Build and run.

wprowadź opis obrazu tutaj

7. Zaufaj twórcy aplikacji w ustawieniach urządzenia

Po uruchomieniu aplikacji pojawi się błąd bezpieczeństwa, ponieważ aplikacja, którą chcesz uruchomić, nie pochodzi z App Store.

wprowadź opis obrazu tutaj

Na urządzeniu przejdź do Ustawienia> Ogólne> Profil> nazwa-twojego-Apple-ID > Zaufaj -u-nazwie-Apple-ID > Zaufanie.

8. Ponownie uruchom aplikację na swoim urządzeniu.

Otóż ​​to. Możesz teraz uruchamiać własne (lub dowolne inne aplikacje, do których masz kod źródłowy) bez konieczności wydawania 99 dolarów. Dziękuję Apple, że w końcu na to pozwoliłeś.

Suragch
źródło
1
wielkie dzięki. działało to doskonale bez płatnej licencji programisty Apple.
kishorer747
To jednak wiąże się z pewnymi problemami - możesz zainstalować maksymalnie 3 aplikacje naraz, a certyfikat musisz odnawiać co tydzień.
SilverWolf - Przywróć Monikę
@seaturtle, dzięki za aktualizację. W końcu wydałem pieniądze na licencję programisty, więc nie byłem na bieżąco z tą odpowiedzią. Szkoda, jeśli chodzi o ograniczenia. Jest kilka rzeczy w Androidzie, które są znacznie ładniejsze niż Apple.
Suragch,
9

Nie możesz, jeśli mówisz o aplikacjach zbudowanych z oficjalnym SDK i wdrażanych bezpośrednio z xcode.

micmcg
źródło
8

Będziesz musiał jailbreak swoje urządzenie.

Czy Berk Güder
źródło
1
Postępuj zgodnie z metodą @ rpetrich i SSH plik wykonywalny do folderu urządzenia / Aplikacje, powinien działać po ponownym uruchomieniu / ponownym uruchomieniu.
esqew
6

Jest sposób na wdrażanie aplikacji na iPhone'a bez płacenia Apple Będziesz musiał jailbreakować swoje urządzenie i postępować zgodnie z instrukcjami na http://www.alexwhittemore.com/?p=398

Lew
źródło
także doskonały przewodnik, z innym podejściem niż @Dan ... mimo wszystko użyłem obu.
cregox
5

Nic, co nigdzie nie widziałem, nie wskazuje na to, że można wdrożyć ad-hoc na prawdziwym iPhonie bez (opłaconego) certyfikatu.

Matthew Phillips
źródło
4

Wczoraj wieczorem przeglądałem programistę Apple i tam w certyfikacie aprowizacji znalazłem coś w stylu - „Podpisywanie członków zespołu”. Myślę, że istnieje sposób na dodanie członków zespołu do płatnego profilu. Możesz po prostu poprosić właściciela identyfikatora aplikacji (płatny), aby dodał Cię jako członka zespołu. Nie jestem pewien. Wciąż tego szukam.

Akshay
źródło
Tak, możesz dodawać członków zespołu. Obowiązuje limit 200 urządzeń rocznie.
cregox,
Cawas - Czy wiesz, jak dodać członka do swojego Apple ID?
Akshay
otrzymujemy powiadomienia tylko wtedy, gdy dodasz @ przed nazwą. Jak sam powiedziałeś, musisz najpierw założyć rachunek płatniczy. Wtedy powinno być naprawdę proste, ponieważ nie mogłem znaleźć żadnego tutoriala, jak to zrobić. Sam nigdy tego nie zrobiłem.
cregox
3

Nie, łatwo to zrobić. W Xcode ustaw Active Configuration na Release. Zmień urządzenie z symulatora na urządzenie - niezależnie od zestawu SDK. Jeśli chcesz bezpośrednio eksportować do swojego iPhone'a, podłącz go do komputera. Naciśnij Buduj i ruszaj. Jeśli Twój iPhone nie jest podłączony do komputera, pojawi się komunikat informujący, że Twój iPhone nie jest podłączony.

Jeśli dotyczy to Ciebie: (iPhone nie był podłączony)

Przejdź do folderu projektów, a następnie do znajdującego się w nim folderu kompilacji. Przejdź do folderu Release-iphoneos i weź aplikację do środka, przeciągnij i upuść na ikonie iTunes. Kiedy zsynchronizujesz swoje urządzenie iTouch, skopiuje je na Twoje urządzenie. Pojawi się również w iTunes jako aplikacja na iPhone'a.

Mam nadzieję że to pomoże!

PS: Jeśli mówi coś o tym, że certyfikat nie jest ważny, po prostu kliknij projekt w Xcode, małą ikonę projektu w stosie plików po lewej stronie i naciśnij Apple + I lub uzyskaj informacje z paska menu. Kliknij Buduj u góry. W obszarze Podpisywanie kodu zmień Tożsamość podpisywania kodu - dowolne urządzenie z systemem operacyjnym iPhone na Nie podpisuj.

cdespinosa
źródło
7
OP nie ma certyfikatu podpisywania ani profilu obsługi administracyjnej. Te instrukcje są przeznaczone dla członków programu dla programistów iPhone'a za 99 USD, ale nie odnoszą się do pytania, jak uruchomić na urządzeniu bez rejestracji w programie.
cdespinosa
2

To naprawdę zależy od używanej wersji Xcode, ponieważ różne wersje używają różnych metod wdrażania na telefonie iPhone bez profilu aprowizacji.

Xcode 3.2.1 to dobra wersja i jest łatwa do uporządkowania, ale musimy wiedzieć, której wersji używasz.

Magnatek
źródło
2

Rozwiązanie opublikowane przez Cawas doskonale współpracuje również z XCode4. Jednak są pewne zmiany w interfejsie IDE, więc musisz trochę poszukać, aby znaleźć Run Script :)

W widoku Nawigatora projektu kliknij element główny projektu, następnie w środkowym oknie wybierz Cel, następnie kliknij zakładkę Fazy budowy, a na dole zobaczysz przycisk Dodaj fazę budowy, kliknij i wybierz Dodaj skrypt uruchamiania, a następnie wklej "codeign "skrypt opublikowany przez Cawas.

Gobol
źródło
1

Nie ma obejścia. Aplikacje można wdrażać ad hoc tylko wtedy, gdy są zarejestrowane na urządzeniu. Uniemożliwia to tworzenie własnego sklepu z aplikacjami.


źródło