Czy można skompilować i uruchomić projekt Xcode na urządzeniu z jailbreakiem bez płatnego certyfikatu programisty?

9

Zarówno z powodu kopnięć, jak i ze względów budżetowych, chciałbym wziąć pakiet, który normalnie wymagałby konta programisty i zbudować aplikację do uruchamiania na zepsutym urządzeniu iOS.

Mam iPoda Touch 5. generacji, jailbroken korzystający z evasi0n, z systemem iOS 6.1.

Używam Xcode 4.6 z systemem OS X (10.8.2) Lion.

Joncom
źródło

Odpowiedzi:

6

Poniższe instrukcje dotyczące realizacji tego celu są podejmowane z: http://iphonedevwiki.net/index.php/Xcode

Moje ustalenia i działania są przedstawione pod każdym krokiem.

1. Utwórz samopodpisany certyfikat podpisujący kod o nazwie „iPhone Developer” w pęku kluczy „login” (domyślny), korzystając z Keychain Access.

  • Wykonałem zrzuty ekranu, postępując zgodnie z powyższą instrukcją.
  • Pozostawiłem większość pól pustych lub ich wartość domyślną.

wprowadź opis zdjęcia tutaj

2. Otwórz /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist(4.2 lub poniżej:) /Developer/Platforms/iPhoneOS.platform/Info.plist. Być może potrzebujesz uprawnień roota.

  • Używam Xcode 4.6, więc otworzyłem poprzedni .plistplik.

3. Wymień wszystkie wystąpienia XCiPhoneOSCodeSignContextprzez XCCodeSignContext. Są trzy z nich (XCode wersja 3.2.4+).

  • Dokonałem trzech modyfikacji, jak wskazują zrzuty ekranu.

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

4. Zapisz plik i uruchom ponownie Xcode.

  • Zapisałem plik.

5.Upewnij się, że masz ldid na komputerze Mac. Umieść kopię gdzieś np /usr/local/bin. W.

6. Utwórz skrypt ldid3.py w języku Python obok programu ldid. Zrób to. Wypełnij:

#!/usr/bin/env python

from sys import argv
from subprocess import check_call
from os.path import basename, dirname, splitext, join
from tempfile import NamedTemporaryFile

app = argv[-1]
ldid_path = join(dirname(__file__), 'ldid')
obj_path = join(app, splitext(basename(app))[0])

if '-gta' not in argv:
    check_call([ldid_path, '-S', obj_path])
else:
    with NamedTemporaryFile('w+b', 0) as f:
        f.write("""
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>get-task-allow</key>
    <true/>
  </dict>
</plist>
        """)
        check_call([ldid_path, '-S' + f.name, obj_path])
  • Utworzyłem nowy plik tekstowy i wkleiłem do niego powyższy kod.
  • Zapisałem ten plik jako ldid3.pyi zapisałem go w /usr/local/binkatalogu.
  • W terminalu pobiegł chmod 777 /usr/local/bin/ldid3.py.

7. Otwórz iPhoneCodeSign.xcspec. Ten plik można znaleźć w [Dla Xcode 4.6: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/iPhoneCodeSign.xcspec]:

8. Zmień wpis w pliku z wywołania codesignna ldid3.py.

  • Zgodnie z oficjalną instrukcją, skonwertuj plik spec na zwykły tekst, wpisując w konsoli: sudo plutil -convert xml1 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/iPhoneCodeSign.xcspec
  • Plik otworzyłem za pomocą TextEdit.
  • Zastąpione <key>CommandLine</key><string>/usr/bin/codesign</string>z <key>CommandLine</key><string>/usr/local/bin/ldid3.py</string>.

9. Zapisz plik i uruchom ponownie Xcode.

  • Zapisałem plik i zamknąłem TextEdit.

10. Utwórz plik /var/mobile/tdmtanfna urządzeniu, aby włączyć „bypass TDMTANF” Apple'a w installd (ostrzeżenie: zrobienie tego spowoduje także przejście do GameCenter w piaskownicy).

  • Tworzę pusty plik tekstowy w systemie Windows, tdmtanfnadałem mu nazwę SSH'd na iPodzie, przesłałem go /var/mobile/i ponownie uruchomiłem iPoda.

Teraz to już koniec z ...

Otwieram istniejący projekt Xcode i klikam Uruchom. Działa w symulatorze iOS bez żadnych problemów.

wprowadź opis zdjęcia tutaj

Upewniam się, że podpisywanie kodu jest skonfigurowane do korzystania z certyfikatu skonfigurowanego w kroku 1.

wprowadź opis zdjęcia tutaj

Buduję aplikację (Projekt> Kompilacja). Pojawia się komunikat o sukcesie.

Łapię mojego folderu aplikacji TicTacToe.appz /Libary/Developer/Xcode/DerivedData/TicTacToe-cjgzmoxtflyegtfypsbxbuiuwxns/Build/Products/Debug-iphoneos/i przeniesienia go na moim komputerze Windows, aby zainstalować na moim iPodzie.

Próbując zainstalować aplikację na iPodzie, przeciągam TicTacToe.appdo sekcji aplikacji w narzędziu konfiguracji iPhone'a, ale otrzymałem ten komunikat o błędzie, informujący, że moja aplikacja „nie jest prawidłową aplikacją mobilną”.

Próbowałem także ręcznie zainstalować aplikację za pomocą iFunbox i aplikacji AppCake znalezionej w Cydii. Oba zawodzą.

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Jako ciekawostkę, ponieważ przeglądając go, zauważyłem, że wiele osób wspomina o tym: mam zainstalowaną aplikację AppSync. (Przepraszam za wielki zrzut ekranu. Jeśli powinienem go zdjąć, proszę dać mi znać!)

wprowadź opis zdjęcia tutaj

Wniosek

Tak więc, pomimo ścisłego przestrzegania instrukcji, kilka razy moja aplikacja nie jest rozpoznawana przez iPhone Configuration Utility jako poprawna aplikacja. Nie mogę ręcznie zainstalować aplikacji przy użyciu programów takich jak iFunbox lub aplikacji Cydia takich jak AppCake.

Podejrzewam, że aplikacja jest rzeczywiście nieprawidłowa, ale po dokładnym wykonaniu instrukcji nie jestem pewien, dlaczego.

Czy ktoś może mi powiedzieć, dlaczego moja aplikacja jest nieważna i co mogę zrobić, aby to naprawić, oprócz kasowania pieniędzy?

Joncom
źródło
To była jednak interesująca lektura.
Thecafremo
Nie - cieszę się, że go przeczytałem i prawdopodobnie wrócę do niego w przyszłości. Dzięki za udostępnienie.
Robert
Było to dla mnie bardzo pomocne podczas pracy na Xcode 4.2 i iOS 4, mam nadzieję, że ktoś może zaktualizować procedurę do Xcode 4.6
rraallvv
Po pobraniu ldid musisz zmienić jego uprawnienia na 755 za pomocą chmod 755 ldid. To spowodowało błąd wyjścia 1.
0

Możesz podłączyć urządzenie i wybrać urządzenie iOS jako Uruchom jako cel. po uruchomieniu aplikacja jest automatycznie instalowana na twoim urządzeniu. Lub możesz wybrać swoje urządzenie iOS, a następnie nie musisz uruchamiać, po prostu zbuduj i zarchiwizuj je. Następnie rozpowszechnij ... wybierz Zapisz dla wdrożenia korporacyjnego lub Ad-Hoc. Otrzymasz plik .ipa. Mam nadzieję, że może ci to pomóc..

sl33py
źródło
0

kontynuując odpowiedź @joncom .. możesz dodać pliki .app bezpośrednio do iPhone'a, wykonując tylko kilka dodatkowych kroków.

  • skopiuj .appplik na pulpit, a następnie spakuj go
  • zmień nazwę [yourappname].zipna[yourappname].ipa
  • następnie pobierz AppSync z cydii
  • pobierz i zainstaluj plik .ipa na swoim urządzeniu

UWAGA:

możesz to również zrobić bezpośrednio, bez przechodzenia przez wszystkie modyfikacje kodu python wspomniane przez @joncom .. czytaj więcej tutaj

Lew
źródło