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ą.
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
.plist
plik.
3. Wymień wszystkie wystąpienia XCiPhoneOSCodeSignContext
przez XCCodeSignContext
. Są trzy z nich (XCode wersja 3.2.4+).
- Dokonałem trzech modyfikacji, jak wskazują zrzuty ekranu.
4. Zapisz plik i uruchom ponownie Xcode.
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.py
i zapisałem go w /usr/local/bin
katalogu.
- 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 codesign
na 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/tdmtanf
na 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,
tdmtanf
nadał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.
Upewniam się, że podpisywanie kodu jest skonfigurowane do korzystania z certyfikatu skonfigurowanego w kroku 1.
Buduję aplikację (Projekt> Kompilacja). Pojawia się komunikat o sukcesie.
Łapię mojego folderu aplikacji TicTacToe.app
z /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.app
do 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ą.
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ć!)
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?
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..
źródło
kontynuując odpowiedź @joncom .. możesz dodać pliki .app bezpośrednio do iPhone'a, wykonując tylko kilka dodatkowych kroków.
.app
plik na pulpit, a następnie spakuj go[yourappname].zip
na[yourappname].ipa
UWAGA:
możesz to również zrobić bezpośrednio, bez przechodzenia przez wszystkie modyfikacje kodu python wspomniane przez @joncom .. czytaj więcej tutaj
źródło