Следующие инструкции для достижения этой цели взяты из:
http://iphonedevwiki.net/index.php/Xcode
Мои выводы и действия представлены на каждом этапе.
1. Создайте самозаверяющий сертификат для подписи кода с именем «iPhone Developer» в цепочке для ключей «логин» (по умолчанию), используя Keychain Access.
- Я сделал скриншоты, следуя приведенным выше инструкциям.
- Я оставил большинство полей пустыми или по умолчанию.
2. Откройте /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist
(4.2 или ниже:) /Developer/Platforms/iPhoneOS.platform/Info.plist
. Вам может потребоваться разрешение root.
- Я использую Xcode 4.6, поэтому я открыл прежний
.plist
файл.
3. Заменить все вхождения XCiPhoneOSCodeSignContext
на XCCodeSignContext
. Их три (версия XCode 3.2.4+).
- Я сделал три модификации, как показывают скриншоты.
4. Сохраните файл и перезапустите Xcode.
5. Убедитесь, что у вас есть ldid на вашем Mac. Поместите копию где-нибудь, например, в /usr/local/bin
.
6. Создайте скрипт Python ldid3.py прямо рядом с программой ldid. Сделайте это исполняемым. Заполните это:
#!/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])
- Я создал новый простой текстовый файл и скопировал в него приведенный выше код.
- Я сохранил этот файл как
ldid3.py
и сохранил его в /usr/local/bin
каталоге.
- В терминале побежал
chmod 777 /usr/local/bin/ldid3.py
.
7. Открыть iPhoneCodeSign.xcspec
. Этот файл можно найти в [Для Xcode 4.6: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/iPhoneCodeSign.xcspec
]:
8. Измените запись в файле с вызова codesign
на ldid3.py
.
- В соответствии с официальной инструкцией, преобразуйте файл спецификации в обычный текст, набрав в консоли:
sudo plutil -convert xml1 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/iPhoneCodeSign.xcspec
- Я открыл файл с помощью TextEdit.
- Заменено
<key>CommandLine</key><string>/usr/bin/codesign</string>
на <key>CommandLine</key><string>/usr/local/bin/ldid3.py</string>
.
9. Сохраните файл и перезапустите Xcode.
- Я сохранил файл и вышел из TextEdit.
10. Создайте файл /var/mobile/tdmtanf
на устройстве, чтобы включить «обход TDMTANF» от Apple в installd (предупреждение: в этом случае вы также попадете в «песочницу» GameCenter).
- Я создаю пустой текстовый файл в Windows,
tdmtanf
называю его SSH'd в моем iPod, загружаю его /var/mobile/
и перезагружаю мой iPod.
Теперь, когда все это закончилось с ...
Я открываю свой существующий проект Xcode и нажимаю Run. Работает в iOS Simulator без проблем.
Я уверен, что Code Signing настроен на использование сертификата, настроенного на шаге 1.
Я создаю приложение (Project> Build). Сообщение об успехе следует.
Я беру папку TicTacToe.app
с моим приложением /Libary/Developer/Xcode/DerivedData/TicTacToe-cjgzmoxtflyegtfypsbxbuiuwxns/Build/Products/Debug-iphoneos/
и переношу ее на мой компьютер с Windows, чтобы установить на мой iPod.
В попытке установить приложение на свой iPod я перетащил TicTacToe.app
в раздел приложений утилиты конфигурации iPhone, но получил это сообщение об ошибке, в котором говорится, что мое приложение «не является допустимым мобильным приложением».
Я также попытался вручную установить приложение, используя iFunbox и приложение AppCake , найденное в Cydia. Оба терпят неудачу.
Интересно, потому что, как я гуглил, я заметил, что многие люди отмечают важность этого: у меня установлен AppSync. (Извините за огромный скриншот. Если мне нужно снять его, пожалуйста, дайте мне знать!)
Вывод
Поэтому, несмотря на то, что я несколько раз следовал инструкциям, мое приложение iPhone Configuration Utility не распознало его как действительное. Я не могу установить приложение вручную с помощью программ, таких как iFunbox, или приложений Cydia, таких как AppCake.
Я подозреваю, что приложение действительно недействительно, но, внимательно следуя инструкциям, я не знаю почему.
Может кто-нибудь сказать мне, почему мое приложение не является действительным, и что я могу сделать, чтобы исправить это, кроме кашляющих денег, которые есть?