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


157

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


Дивіться цю відповідь на запитання, яке я попросив раніше, про дуже гарне керівництво про те, як розмістити його на своєму розірваному iPhone.
Ден Уокер


2
У Xcode 7 зараз є безкоштовне надання, тому немає необхідності підписуватися на обліковий запис розробника Apple, щоб перевірити додатки на реальному пристрої. Дивіться цю відповідь для отримання більш детальної інформації.
Сурагч

Відповіді:


56

Здається, що програма не підписана. Завантажте ldid від Cydia та використовуйте його так:ldid -S /Applications/AccelerometerGraph.app/AccelerometerGraph

Також переконайтеся, що двійковий код позначений як виконуваний: chmod +x /Applications/AccelerometerGraph.app/AccelerometerGraph


3
Так, для роботи цього методу вам знадобиться втекти з ладу ваш пристрій. (очевидно)
esqew

як запустити команду ldid -S ...? для цього вам потрібна консоль SSH? чи є який-небудь безкоштовний спосіб отримати клієнта SSH на встроенному iphone?
Дан Ліяху

tanderson: у Cydia є пакет ldid, і ви можете зібрати його для OS X
rpetrich

rpetrich Я вважаю, що його питання полягає в тому, як набрати та використовувати команду, а не як придбати пакет. @tanderson ви можете перейти через Open SSH (а потім підключитися до телефону зі свого робочого столу) або через термінал всередині самого iPhone. Обидва додатки - це безкоштовні завантаження із Cydia . З SSH ви маєте перевагу, ви також можете використовувати його для простого копіювання програми на телефон. Якщо ви цим займаєтесь багато, не забудьте перевірити інші відповіді - ви можете змусити XCode виконувати всю роботу вам, але це клопітка процедура, щоб її обдурити.
Крего

92

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

Оновлення січня 2012 року: це все ще працює на SDK 4.2.1 та iOS 5.0.1 - я лише протестував це все на новому комп’ютері та пристрої!


1. Створіть самопідписаний сертифікат

Виправте свій SDK для iPhone, щоб дозволити використовувати цей сертифікат:

  1. Запустіть Keychain Access.app. Якщо в меню Keychain не вибрано жодних елементів, виберіть Assistant Certificate Assistant, а потім створіть сертифікат.

    • Ім'я: iPhone Developer
    • Тип сертифіката: Підпис коду
    • Дозвольте мені змінити значення за замовчуванням: Так
  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 для побудови на пристрої Jailbroken

  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" та встановіть обоє на запис "Не підписуйте код" :

    alt текст

    Після цього сміливо скасуйте крок 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

Для другої частини:

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

Спробувавши слідуючи цим інструкціям, але тепер "Схема" має тип мого Mac 64 біт, і я більше не маю можливості запускати симулятор або реальний 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, щоб звичайний користувач виконав його. З цим процедура прекрасно працює.
abidibo

43

Безкоштовне забезпечення після Xcode 7

Щоб перевірити ваш додаток на реальному пристрої, а не сплачувати плату Apple Developer (або джейлбрейк вашого пристрою), ви можете використовувати нове безкоштовне забезпечення, яке підтримує Xcode 7 та iOS 9.

Ось кроки, зроблені в більшій чи меншій мірі з документації (що досить добре, тому прочитайте це):

1. Додайте свій ідентифікатор Apple у Xcode

Перейдіть до XCode> Налаштування> вкладка Облікові записи> Кнопка Додати (+)> Додати Apple ID. Докладнішу інформацію див. У документах .

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

2. Перейдіть на вкладку Загальне в Навігаторі проектів

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

3. Виберіть свій ідентифікатор Apple в меню "Команда".

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

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

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

5. Натисніть кнопку Виправити проблеми

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

Якщо ви отримаєте помилку про те, що ім'я пакету недійсне, змініть його на щось унікальне.

6. Запустіть додаток

У Xcode натисніть кнопку Побудувати і запустити.

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

7. Довіряйте розробнику програми в налаштуваннях пристрою

Після запуску програми ви отримаєте помилку безпеки, оскільки додаток, яке ви хочете запустити, не з App Store.

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

На своєму пристрої перейдіть у Налаштування> Загальне> Профіль> ваше-Apple-ID-ім'я > Довіряйте своєму Apple-ID-імені > Довіряйте.

8. Запустіть додаток на своєму пристрої ще раз.

Це воно. Тепер ви можете запустити свої власні (або будь-які інші програми, для яких у вас є вихідний код), не витрачаючи 99 доларів. Дякую, Apple, що нарешті це дозволили.


1
дуже дякую. це спрацювало ідеально без платної ліцензії Apple Developer.
kishorer747

Однак у цьому є деякі проблеми - ви можете одночасно встановлювати до 3 додатків, і вам потрібно поновлювати сертифікат щотижня.
SilverWolf - Відновіть Моніку

@seaturtle, дякую за оновлення. Врешті-решт я відпустив гроші на ліцензію розробника, тому я не в курсі цієї відповіді. Це занадто погано щодо обмежень. Є деякі речі щодо Android, які набагато приємніші за Apple.
Сурагч

9

Ви не можете, якщо ви говорите про додатки, створені за допомогою офіційного SDK та розгортання прямо з xcode.


8

Вам доведеться втекти з ладу свій пристрій.


1
Дотримуйтесь методу @ rpetrich і SSH виконуваного файлу в папку / програми програми, він повинен працювати після перезавантаження / повторної публікації.
esqew

6

Існує спосіб розгортати додатки для iPhone, не платячи за яблуко. Вам доведеться зняти збиткові пристрої та дотримуватися вказівок на веб-сайті http://www.alexwhittemore.com/?p=398


також ідеальний посібник, з іншим підходом від @Dan ... Я використовував обидва, тхо.
Крегокс

5

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


4

Я вчора ввечері переживав розробника Apple, і там, у наданні сертифікату, знайшов щось на кшталт «Члени команди, що підписують». Я думаю, що є спосіб додати членів команди до оплачуваного профілю. Ви можете просто попросити власника App Id (платного), щоб додати вас як члена команди. Я не впевнений. Досі шукаю на цьому.


Так, ви можете додати членів команди. Існує ліміт до 200 пристроїв на рік.
Крего

Кавас - Чи знаєте ви, як додати члена до свого яблучного ідентифікатора?
Акшай

ми отримуємо сповіщення лише в тому випадку, якщо ви додали @ перед назвою. Як ви самі сказали, спочатку ви повинні отримати платіжний рахунок. Тоді це повинно бути дуже просто, тому що я не зміг знайти жодного підручника щодо того, як це зробити. Я ніколи цього не робив сам, тхо.
Крегокс

3

Ні, це легко зробити. У Xcode встановіть Активну конфігурацію на Release. Змініть пристрій з Simulator на Device - незалежно від SDK. Якщо ви хочете безпосередньо експортувати на свій iPhone, підключіть його до комп'ютера. Натисніть "Збірка та перехід". Якщо ваш iPhone не підключений до комп'ютера, з'явиться повідомлення про те, що ваш iPhone не підключений.

Якщо це стосується вас: (iPhone не підключено)

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

Сподіваюся, це допомагає!

PS: Якщо це говорить про те, що сертифікат недійсний, просто натисніть на проект у Xcode, маленький значок проекту у стеку файлів ліворуч та натисніть Apple + I або отримайте інформацію з панелі меню. Клацніть на Створити вгорі. У розділі Підписання коду змініть особу підпису коду - будь-який пристрій iPhone ОС не підписуватиметься.


7
У ОП немає сертифікату підпису чи профілю забезпечення. Ці інструкції призначені для членів, якщо програма для розробників iPhone $ 99, але не стосується питання про запуск на пристрої без реєстрації в програмі.
cdespinosa

2

Це насправді все залежить від того, яку версію Xcode ви використовуєте, оскільки різні версії використовують різні методи для розгортання на вашому iPhone без профілю надання.

Xcode 3.2.1 - це хороша версія, її легко розібрати, але нам потрібно знати, яку версію ви використовуєте.


2

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

У вікні «Навігатор проектів» натисніть на головний елемент проекту, потім у середньому вікні виберіть «Ціль», потім виберіть вкладку «Фази збірки», а внизу ви побачите кнопку «Додати фазу збірки», натисніть і виберіть «Додати запустити сценарій», а потім вставте «кодизайн "сценарій, опублікований Кавасом.


1

Немає способу вирішення. Можна додатково розгортати додатки лише в тому випадку, якщо вони зареєстровані на вашому пристрої. Це не дозволяє створити власний магазин додатків ..

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.