Как я могу развернуть приложение iPhone из Xcode на реальном устройстве iPhone?

157

Как я могу развернуть приложение iPhone из Xcode на реальном устройстве iPhone, не имея сертификата Apple за 99 долларов США?

DFG
источник
Посмотрите этот ответ на вопрос, который я задавал ранее, чтобы получить очень хорошее руководство о том, как поставить его на сломанный iPhone.
Дэн Уокер
2
Xcode 7 теперь имеет бесплатную инициализацию, поэтому нет необходимости регистрировать учетную запись Apple Developer для тестирования приложений на реальном устройстве. Смотрите этот ответ для более подробной информации.
Сурагч

Ответы:

56

Похоже, приложение не подписано. Загрузите ldid с Cydia, а затем используйте его так:ldid -S /Applications/AccelerometerGraph.app/AccelerometerGraph

Также убедитесь, что бинарный файл помечен как исполняемый: chmod +x /Applications/AccelerometerGraph.app/AccelerometerGraph

rpetrich
источник
3
Да, вам нужно сделать джейлбрейк вашего устройства, чтобы этот метод работал. (очевидно)
esqew
как запустить команду ldid -S ...? вам нужна консоль SSH для этого? Есть ли какой-нибудь бесплатный способ получить SSH-клиент на взломанном IPhone?
Дэн Лиху
tanderson: в Cydia есть пакет ldid, и вы можете скомпилировать его для OS X
rpetrich
Я считаю, что его вопросы в том, как набрать и использовать команду, а не как получить пакет. @tanderson вы можете пройти через Open SSH (а затем подключиться к телефону со своего рабочего стола) или через терминал внутри самого iPhone. Оба приложения можно бесплатно загрузить с Cydia . С SSH у вас есть преимущество, вы также можете использовать его, чтобы просто скопировать ваше приложение на телефон с ним. Если вы делаете это много, обязательно проверьте другие ответы - вы можете заставить XCode делать всю работу за вас, но это сложная процедура, чтобы обманным путем сделать это.
Cregox
92

Я использовал сочетание двух HOWTOs: Джейсон и Алекса . Со вторым у нас есть преимущество возможности отладки. Я в основном просто скопирую оба ниже (и упросту Алекс):

Обновление январь 2012: это все еще работает на SDK 4.2.1 и iOS 5.0.1 - я только что проверил все это на новом компьютере и устройстве!


1. Создайте самоподписанный сертификат

Обновите свой iPhone SDK, чтобы разрешить использование этого сертификата:

  1. Запустите Keychain Access.app. Если элементы не выбраны, в меню «Связка ключей» выберите «Ассистент сертификатов», затем «Создать сертификат».

    • Имя: Разработчик iPhone
    • Тип сертификата: Кодовая подпись
    • Позвольте мне изменить значения по умолчанию: Да
  2. Нажмите Продолжить

    • Срок действия: 3650 дней
  3. Нажмите Продолжить

  4. Blank вне на Email поле адреса.

  5. Нажмите Продолжить до завершения .

    Вы должны увидеть «Этот корневой сертификат не является доверенным» . Это ожидается.

  6. Настройте iPhone SDK, чтобы разрешить использование самозаверяющего сертификата:

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

    Если у вас открыт Xcode, перезапустите его, чтобы изменения вступили в силу.

И если вы на iOS 5, это все! Попробуй это сейчас! Это может не позволить отладку, но приложение будет там!

Я был очень удивлен этим, потому что, как вы должны знать , я понятия не имею, о чем все эти взломы! Все, что я сделал, немного улучшило то, что я нашел в другом месте, как я указал.

Так что да, весь метод больше не работает так же, и я не мог найти новый ... За исключением этого, который использует инструмент под названием Theos, но я не смог пройти весь процесс.

Наконец, если вам нужно удалить его по какой-либо причине, проверьте конец этого поста. В моем случае мне пришлось это сделать, потому что я не мог понять, почему весь этот метод перестал работать, и мне было все равно, так как мы уже получили долгожданную лицензию. (Сумасшедший номер DUNS занимает так много времени ...)

,

,


,

,

,

2. Включите Xcode для сборки на взломанном устройстве

  1. На свой взломанный iPhone установите приложение AppSync , добавив источник ** http://repo.hackyouriphone.org **

  2. Удалите требования SDK для знака кода и прав (я люблю sed !):

    sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/SDKSettings.plist
  3. Обратите внимание наiPhoneOS5.0.sdkчасть. Если вы, например, используете iOS 4.2 SDK, просто замените его соответствующим образом:

    sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/SDKSettings.plist
  4. Завершите требование удаления через исправление Xcode. Это означает двоичное редактирование:

    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
    

    Если у вас открыт Xcode, перезапустите его, чтобы изменения (и последние) вступили в силу.

  5. Откройте «Проект> Изменить настройки проекта» (из меню). Нажмите на вкладку «Сборка» . Найдите «Идентификатор подписи кода» и его дочернее «Любое устройство iPhoneOS» в списке и задайте для обеих записей «Не подписывать код» :

    альтернативный текст

    После этого не стесняйтесь отменить шаг 3. По крайней мере, в моем случае все прошло хорошо.

  6. Настройка XCode для подписи кода с помощью нашего собственного самозаверяющего сертификата (первое практическое руководство). Этот шаг, вероятно, можно пропустить, если вы не хотите иметь возможность отладки:

    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
    

    Подключите свой iPhone и откройте Xcode. Откройте Окно> Органайзер. Выберите устройство из списка слева и нажмите «Использовать для разработки». Вам будет предложено ввести логин на сайте инициализации, нажмите «Отмена». Это делается для того, чтобы облегчить законную инициализацию, но не делает нелегитимную неработоспособность более сложной.

    Теперь вы должны выполнить эту последнюю часть для каждого нового проекта, который вы делаете . Перейдите в меню «Проект»> «Новый этап сборки»> «Новый этап запуска сценария сборки». В окне скопируйте / вставьте это:

    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
    

,

,


,

,

Удаление

Для 1-й части:

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

Для 2-й части:

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

если вы сделали шаг 3 вместо 2, просто измените его соответствующим образом:

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

в остальном, просто возвращаем то, что вы сделали в XCode, и удаляем, /Developer/iphoneentitlements401/gen_entitlements.pyесли хотите:

sudo rm -f /Developer/iphoneentitlements401/gen_entitlements.py
cregox
источник
Пробовал следовать этим инструкциям, но теперь «Схема» имеет тип My Mac 64 bit, и у меня больше нет возможности запускать симулятор или настоящий iPhone, поэтому я даже не могу протестировать код. Я использовал SDK 4.3, не уверен, что это важно
nosatalian
1
Собственно, обновление: после изменения базового SDK в настройках проекта с iphoneos на iOS 4.3 все работает. Хотя xcode говорит: «Ошибка запуска удаленной программы: не удалось получить задачу для процесса», я могу запустить приложение, щелкнув по нему.
Носаталий
1
Я получаю эту ошибку: The identity used to sign the executable is no longer valid. ... (0xE8008018) даже когда я ставлю 3650 дней, чтобы истечь. Кажется, что сам телефон делает проверку.
Стивен
работает ли этот трюк с «исправлением кода XCode» для 4.3.2, или он его затормозит
Габор
1
Пункт 6. В моем случае мне пришлось изменить права доступа к файлу /Developer/iphoneentitlements401/gen_entitlements.py, чтобы обычный пользователь выполнил его. При этом процедура работает отлично.
Абидибо
43

Бесплатная инициализация после Xcode 7

Чтобы протестировать свое приложение на реальном устройстве, а не платить Apple Developer (или сделать джейлбрейк своего устройства), вы можете использовать новую бесплатную инициализацию, поддерживаемую Xcode 7 и iOS 9.

Вот шаги, предпринятые более или менее из документации (что очень хорошо, так что прочитайте ее):

1. Добавьте свой Apple ID в Xcode

Перейдите в XCode> «Настройки»> «Аккаунты»> «Добавить» (+)> Добавить Apple ID. Смотрите документы для получения дополнительной помощи.

введите описание изображения здесь

2. Откройте вкладку «Общие» в Навигаторе проекта.

введите описание изображения здесь

3. Выберите свой Apple ID из всплывающего меню «Команда».

введите описание изображения здесь

4. Подключите свое устройство и выберите его в меню схемы.

введите описание изображения здесь

5. Нажмите кнопку Исправить проблемы

введите описание изображения здесь

Если вы получили ошибку о том, что имя пакета неверно, измените его на что-то уникальное.

6. Запустите ваше приложение

В Xcode, нажмите кнопку Build and run.

введите описание изображения здесь

7. Доверьтесь разработчику приложения в настройках устройства

После запуска приложения вы получите ошибку безопасности, потому что приложение, которое вы хотите запустить, не из App Store.

введите описание изображения здесь

На устройстве перейдите в «Настройки»> «Основные»> «Профиль»> « ваше-Apple-ID-имя» > «Доверяйте своему-Apple-ID-имени» > «Доверять».

8. Запустите приложение на своем устройстве снова.

Вот и все. Теперь вы можете запускать свои собственные (или любые другие приложения, для которых у вас есть исходный код) без необходимости тратить 99 долларов. Спасибо, Apple, за то, что наконец позволил это.

Suragch
источник
1
большое спасибо. это отлично работало без платной Apple Developer License.
kishorer747
Однако у этого есть некоторые проблемы - вы можете установить только до 3 приложений одновременно, и вам необходимо обновлять сертификат каждую неделю.
Серебряный Волк - Восстановить Монику
@seaturtle, спасибо за обновление. В конце концов, я раздобыл деньги на лицензию разработчика, поэтому не отвечал на этот вопрос. Это слишком плохо об ограничениях. В Android есть некоторые вещи, которые намного приятнее, чем Apple.
Сурагч,
9

Вы не можете, если вы говорите о приложениях, созданных с использованием официального SDK и развертываемых прямо из xcode.

micmcg
источник
8

Вам придется сделать джейлбрейк вашего устройства.

Can Berk Güder
источник
1
Следуйте методу @rpetrich и вставьте SSH исполняемого файла в папку устройства / Applications, он должен работать после перезагрузки / восстановления.
esqew
6

Существует способ развертывания приложений iPhone без оплаты Apple. Вам придется сделать джейлбрейк устройства и следовать инструкциям, приведенным в http://www.alexwhittemore.com/?p=398.

Лео
источник
также идеальное руководство, с подходом, отличным от @Dan ... Я использовал оба, хотя.
Cregox
5

Ничто из того, что я видел, не указывает на то, что вы можете выполнить специальное развертывание на реальном iPhone без (платного) сертификата.

Мэтью Филлипс
источник
4

Вчера вечером я проходил через Apple Developer и там в сертификате обеспечения я обнаружил что-то вроде - «Подписание членов команды». Я думаю, что есть способ добавить членов команды в платный профиль. Вы можете просто попросить владельца идентификатора приложения (платного) добавить вас в качестве члена команды. Я не уверена. Все еще ищу это.

Акшай
источник
Да, вы можете добавить членов команды. Существует ограничение в 200 устройств в год.
Cregox
Cawas - Знаете ли вы, как добавить участника в ваш Apple ID?
Акшай
мы получаем уведомления только в том случае, если вы добавите @ перед именем. Как вы сказали сами, вы должны сначала получить платежный счет. Тогда это должно быть действительно просто, потому что я не мог найти учебник о том, как это сделать. Я никогда не делал это сам, хотя.
Cregox
3

Нет, это легко сделать. В XCode установите Активную Конфигурацию к Выпуску. Измените устройство с Симулятора на Устройство - независимо от SDK. Если вы хотите напрямую экспортировать на свой iPhone, подключите его к компьютеру. Нажмите Build и Go. Если ваш iPhone не подключен к компьютеру, появится сообщение о том, что ваш iPhone не подключен.

Если это относится к вам: (iPhone не был подключен)

Перейдите в папку ваших проектов, а затем в папку сборки внутри. Перейдите в папку Release-iphoneos и возьмите приложение внутрь, перетащите на значок iTunes. Когда вы синхронизируете ваше устройство iTouch, оно скопирует его на ваше устройство. Он также будет отображаться в iTunes как приложение для iPhone.

Надеюсь это поможет!

PS: Если он говорит что-то о том, что сертификат недействителен, просто нажмите на проект в Xcode, маленький значок проекта в стеке файлов слева и нажмите Apple + I, или выполните Get Info из строки меню. Нажмите на Build вверху. В разделе «Подписывание кода» измените Идентификацию подписи кода - любое устройство iPhone OS должно быть не подписанным.

cdespinosa
источник
7
У OP нет сертификата подписи или профиля обеспечения. Эти инструкции предназначены для участников программы для разработчиков iPhone за 99 долларов США, но не решают вопрос о том, как работать на устройстве без регистрации в программе.
cdespinosa
2

Это действительно все зависит от того, какую версию XCode вы используете, так как разные версии используют разные методы для развертывания на вашем iPhone без профиля обеспечения.

Xcode 3.2.1 - хорошая версия, и ее легко разобрать, но нам нужно знать, какую версию вы используете.

МАГНАТЭК
источник
2

Решение, опубликованное Cawas, прекрасно работает и с XCode4. Однако в пользовательском интерфейсе IDE есть некоторые изменения, поэтому вам нужно провести некоторое исследование, чтобы найти Run Script :)

В представлении Project Navigator щелкните корневой элемент проекта, затем в среднем окне выберите Target, затем перейдите на вкладку Build Phases и в нижней части вы увидите кнопку Add Build Phase, нажмите и выберите Add Run Script, затем вставьте «codeign» "скрипт размещен Cawas.

Gobol
источник
1

Обходного пути нет. Развернуть приложения можно только в том случае, если они зарегистрированы на вашем устройстве. Это мешает вам создать свой собственный магазин приложений.


источник