среда, 17 марта 2010 г.

Тестирование своего приложения на реальном iPhone

Рано или поздно вам надоест смотреть на вашу первую программку в симуляторе айфона и захочется похвастаться друзьям показав ее на вашем айфоне. Так как мы бедные и нам пока жалко $99 на лицензию разработчика, то мы вынуждены хачить. Вобще-то это не очень хорошо, но что же делать?

Что же нужно для того, чтоб установить свою свеженаписанную программку на реальный девайт?


Во-первых нужно создать сертификат разработки:
  1. Открываем Служебные программы > Связка Ключей
  2. Из меню Связки ключей откройте Ассистент Сертификации > Создать сертификат
  3. Впишите имя сертификата. Я написал "iPhone Developer"
  4. Из выпадающего меню выберите "Самоподписанный корневой сертификат" и поставьте галочку "Позволить мне изменять значения по умолчанию"
  5. Впишите серийный номер сертификата (любой уникальный номер). Также, установите Тип сертификата - "Код-подпись"
  6. Заполните поля о себе
  7. На всех следующих формах принимайте значения по умолчанию
  8. Перезапустите Xcode и в свойствах проекта укажите только что созданный сертификат (Project > Edit Project Settings > Build > Code Singing > iPhone Developer)
Это лишь первая часть наших приготовлений. 

  1. Далее открываем для редактирования файл: /Developer/Platforms/iPhoneOS.platform/Info.plist
  2. Находим в тексте выражение XCiPhoneOSCodeSignContext и заменяем его на XCCodeSignContext. Таких выражений должно быть два во всем тексте, в строке 46 и 79
  3. Сохраняем и перезапускаем Xcode
  4. Теперь необходимо скачать утилитку ldid на ваш Мак в папку /usr/local/bin. Так же на этот файл нужно дать разрешение на запуск execute (выбрать Свойства из контекстного меню файла и там в самом низу поставить все галочки)
  5. Откройте для редактирования файл /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS Build System Support.xcplugin/Contents/Resources/iPhoneCodeSign.xcspec
  6. В райене 12 строки нужно заменить CommandLine = "/usr/bin/codesign" на CommandLine = "/usr/local/bin/ldid"
  7. Сохраните файл и перезагрузите Xcode
Ну вот вроди бы и все. Если вы обновите себе iPhone SDK то все эти действия необходимо будет повторить.

Теперь необходимо выбрать компиляцию проекта для девайса:
Снимок экрана 2010-03-17 в 01.23.05

ВПЕРЕД!!! компилируем приложение, оно инсталируется в наш айФончик. После этого пытается запуститься дебагинг в Xcode но нам это уже не нужно, ведь мы только что записали на iPhone нашу первую программу. Весь мир у наших ног...

Если у вас все получилось и вы скомпилировали проект в айфон - то отпишитесь в комментариях, потому как уже у двух людей не получилось. Я конечно много колдовал пока и у меня вышло, но это вроди все что я делал.

К этим действиям я пришел почитав статью Запуск своего приложения на iPhone и Developing without Provisioning Profile

28 комментариев:

  1. Как открыть файл /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS Build System Support.xcplugin/Contents/Resources/iPhoneCodeSign.xcspec

    ОтветитьУдалить
  2. да любым текстовым редактором, например Coda или Espresso. Если вы ищете этот файл пользуясь файндером, то дойдя до файла iPhoneOS Build System Support.xcplugin нужно из его контекстного меню выбрать Показать содержание пакета и тогда дальше по пути.

    ОтветитьУдалить
  3. Сам пытаюсь начать с нуля))).Причем и мака у мня нет,разбираюсь под WMVare. Теперь когда пытаюсь скомпилировать икскод пишет usr/local/bin/idit No such as directory че это за фигня?Да кстати выставить права на запуск не могу в свойствах файла idit выставить , там только чтение и запись есть пункты?

    ОтветитьУдалить
  4. ну на счет прав вот так должно быть http://bit.ly/c5vycj ну и еще раз проверь есть ли там этот файл ldid. А вобще, у меня небыло папки bin в /usr/local/ и я закинул такой же файл в папку /usr/bin/ и в файле iPhoneCodeSign.xcspec прописал уже путь /usr/bin/ldid Попробуй сделать так же

    ОтветитьУдалить
  5. да вот херня ничего не получаеться не знаю даж че делать картинка у мня совершенно другая и выставить права на execute я не можу.

    ОтветитьУдалить
  6. Откуда ты этот idit взял может выложишь уже execute версию а то он у мня выглядит как текстовой файл с кракозябрами(((Я уже в отчаянии

    ОтветитьУдалить
  7. Открой терминал, введи там команду: sudo chmod 755 /usr/bin/ldid

    Этим ты выставишь нужные права. Ну вот на всякий случай ссылка на мой файл http://dl.dropbox.com/u/298332/trash/ldid

    ОтветитьУдалить
  8. Да не видимо под виртуалкой не катит ибо все эти действия я уже проделывал,жаль придеться симулятором довольствоваться((( Ну другим будет наука)))Лучше скажи если знаешь какие нибудь уроки в фотошопе по созданию меню. Ты язык то знаешь или как я ?Чево то понятно а чего то ну ваще не допереть)))

    ОтветитьУдалить
  9. Значит у тебя так и говорит мол файла такого не найдено? Или уже что-то другое пишет? Не думаю, что разница какая-то есть под виртуалькой система или нет.

    А язык я не знаю вобще, ну знаком с синтаксисом С++ (немного), но тут мне только гугл помогает. Не могу найти на русском литературы нормальной, а на английском читаю медленно. Приходится по кусочкам учить. Но уже доделываю свои часы, скоро напишу обзор и может даже попробую в AppStore закинуть их через издателя

    ОтветитьУдалить
  10. а про фотошом я не понял, ты про уроки как рисовать менюшки для своих программ? Ну так тут есть интерфейс билдер, можно большинство меню построить из страндартных вещей.

    ОтветитьУдалить
  11. У мня к тебе просьба.Ты как только там выложишь программульку свою скинь мне исходник я просто хочу на примере разобраться чево там происходит)))Попробовал глянуть исходник игрушки ,безперспективняк слишком там все накручено не разобраться.
    Да на русском я тож ничего не нашел сам такой все по англицки))))

    ОтветитьУдалить
  12. Да по поводу файла по ссылке выдает какие то кракозябры в браузере)да и хрен сним.

    ОтветитьУдалить
  13. Да файл у меня точно такой же как и тот, что выше я давал ссылку в посте. Кстати, можно же писать под iPhone на Adobe Flash CS5. Как по мне, так ActionSript намного проще чем Objective-C. http://labs.adobe.com/technologies/flashcs5/appsfor_iphone/

    А на счет исходника то я наверное тут опишу вобще весь пусть создания часов.

    ОтветитьУдалить
  14. This provisioning profile does not have a valid signature (or it has a valid, but untrusted signature).

    ОтветитьУдалить
  15. и это после всех мучений(( что не так то?

    ОтветитьУдалить
  16. эту ошибку пишет когда пытаешься скомпилить приложение на девайс?

    ОтветитьУдалить
  17. попробуй еще такое:
    открой файл /Developer/Platforms/iPhoneOS.platform/Info.plist
    в ветке defaultProperties отредактируй там строки (или добавь) , чтоб было вот так
    PROVISIONING_PROFILE_ALLOWED = NO;
    PROVISIONING_PROFILE_REQUIRED = NO;

    По идее теперь твоя программа будет компилироваться, но не будет сама записываться на айФон, нужно будет ее ручками туда записывать.

    Я этот способ еще не пробовал, но люди пишут, что работает

    ОтветитьУдалить
  18. а вобще, в ЖЖ сообщесте ru_mac можно попросить кого-то, чтоб добавили твой UUID к их девелоперскому и сможешь тестировать все без проблем. Один человек предлагал мне за 200р это сделать, но может кто-то и бесплатно согласится, хотя 200р это ж не деньги для такого дела :)

    ОтветитьУдалить
  19. Кстати, насчет "можно же писать под iPhone на Adobe Flash CS5" у меня такой вопрос.
    При компиляции он вс равно просит сертификаты, как в таком случае быть бедным начинающим девелоперам?) Может их можно сгенерировать или скачать где-то, ведь adobe не будет проверять их подлинность...

    ОтветитьУдалить
  20. А все, ведь уже Apple запретила разработку приложений в сторонней среде разработки такой как Adobe Flash CS5. Я сейчас на пути тестирования самого дешевого пути попадания в аппстор. Это через сторонних посредников, таких как appdev.ru

    ОтветитьУдалить
  21. Если указать старый codesign, а не ldid, то все почти работает, за исключением отладки:
    "Error from Debugger: Error Launching remote program: failed to get the task for process 1581"

    Иначе если, указываем "ldid", то получаю: "dyld: unknown required load command 0x80000022".

    ОтветитьУдалить
  22. XCode 3.2.2 полет нормальный. Спасибо за мануал.

    ОтветитьУдалить
  23. Все отлично работает, кроме отладки. Её вообще реально запустить прям на девайсе?

    ОтветитьУдалить
  24. Все разобрался. Спасибо автору за мануал. Если кому что не понятно, можете заглянуть сюда http://azacode.wordpress.com/2010/06/06/debug-iphone-apps-on-jailbroken-iphone-3g-with-xcode-3-2-2-another-safe-keeping/ .

    ОтветитьУдалить
  25. Подскажите начинающему
    Захотелось мне научится программировать под iOS.
    iPhone у меня уже год, вот купил Macbook.
    Поставил xcode, попробовал написать какую-то чепуху - в эмуляторе работает. Стало интересно попробовать на реальнов девайсе.
    Покупать сертификат разработчика в Эпл еще считаю рано.
    В Интернет полно описаний как сделать это самому:
    создать сертификат, изменить пару файлов настройки, заменить /usr/bin/codesign на /usr/bin/ldid
    вроде все сделал по инструкции, но все равно ругается и на iPhone ничего не записывает.
    телефон не взломанный и не хочу с ним ничего делать.
    может быть в этом дело?

    ОтветитьУдалить
  26. Xcode 4.5.2, ios6.
    В info.plist XCiPhoneOSCodeSignContext встречается 1 раз. После изменения этого файла и перезапуска xcode iPhone SDK больше не видна. И проблему эту можно решить только переустановкой xcode.

    ОтветитьУдалить
  27. всем привет! Эта статья еще актуальна?
    я наткнулся во второй части в первом пункте, что в папке девелопер просто нет папки платформс.
    и ничего подобного также не вижу

    ОтветитьУдалить