Как создать приложение .ipa для react-native-ios?

Я бы попробовал https://stackoverflow.com/questions/41970435 Но я не могу получить файл .ipa.

Кто-нибудь может объяснить, как получить файл .ipa?


person Saravana Kumar    schedule 08.02.2017    source источник
comment
Возможный дубликат: stackoverflow.com/questions/34933439/   -  person eden    schedule 08.02.2017
comment
Это не дубликат вышеуказанного вопроса, потому что ответ на этот вопрос устарел; детали изменились с тех пор, как был задан вопрос.   -  person Jules    schedule 29.03.2018
comment
Возможное деплицирование: stackoverflow.com/ questions / 35476349 /   -  person Dean Meehan    schedule 31.07.2018


Ответы (3)


  1. Получите .app файл:

     react-native run-ios --configuration=release
    
  2. .app путь к файлу Build/Products/Release/"<Your_Filename>.app".

  3. Преобразовать .app в .ipa:

    • Create folder Payload.
    • вставьте файл .app в папку Payload.
    • сжать папку Payload.
    • измените желаемое имя и укажите расширение как .ipa.
person Saravana Kumar    schedule 09.02.2017
comment
Получение ошибки о профиле подготовки и размере сборки в 5 раз больше, чем при сборке Xcode. - person RANVIR GORAI; 12.03.2018
comment
@RANVIRGORAI Я не сталкивался с такой проблемой. Не могли бы вы прикрепить дамп ошибок. - person Saravana Kumar; 13.03.2018
comment
Не работает. An error was encountered processing the command (domain=NSPOSIXErrorDomain, code=2): - person Green; 17.08.2018
comment
Что это за колдовство? - person wvicioso; 28.10.2019
comment
Я получил эту ошибку, когда загружаю ipa из транспорта. ОШИБКА ITMS-90174: Отсутствует профиль обеспечения. Приложения должны содержать профиль обеспечения в файле с именем embedded.mobileprovision. - person Alex Poon; 25.05.2020
comment
Путь Build / Products / Release / ‹Your_Filename› .app не существует. А что вы подразумеваете под папкой Payload? - person Kasra; 27.05.2020
comment
Я не могу найти папку Build, чтобы найти Build / Products / Release / ‹Your_Filename› .app. где найти? - person preston; 11.06.2020
comment
@preston посмотрите на CLI после запуска react-native run-ios --configuration=release, если все в порядке, у вас будет следующая строка info Installing "/Users/"<Your_Username>"/Library/Developer/Xcode/DerivedData/"<Your_Filename>"-gpyqutyfhaccnvgoneubfmtbglgw/Build/Products/Release-iphonesimulator/"<Your_Filename>".app", которая представляет собой выпуск. Но мой вопрос в том, как сжать полезную нагрузку? Это простое сжатие zip или другое специфическое? - person Khalil Hamani; 17.06.2020
comment
@KhalilHamani да, просто сжимайте, командную строку zip -r или UI как обычно. Измените расширение .zip на .ipa в сведениях о файле. - person Carla Camargo; 05.08.2020
comment
в моей системе эта команда не генерирует файл .app, она запускает приложение только в эмуляторе iOS (response-native 0.63.2) - person Devis L.; 12.11.2020
comment
когда я открываю его в iPhone, он открывается как файл .zip. - person Zeeshan Ahmad Khalil; 18.03.2021

  • Удалить элемент localhost из info.plist

    Настройки безопасности транспорта приложений -> Домены исключений

  • Связка ios

    react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios
    
  • В Xcode

    Продукты-> Схема-> Изменить схему -> Изменить конфигурацию сборки на RELEASE

  • In AppDelegate.m 

    Заменять

    jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
    

    с участием

    #ifdef DEBUG
      jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
    #else
      jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
    #endif
    
  • Сменить устройство -> Обычное устройство iOS

  • Продукт -> Чистый

  • Продукт -> Сборка

  • .app файл можно найти по адресу

    ~/Library/Developer/Xcode/DerivedData/<app name>/Build/Products/Release-iphoneos/<appname>
    
  • Создайте папку Payload.

  • Вставьте файл .app в папку Payload.

  • Сожмите папку Payload.

  • Измените желаемое имя и укажите расширение как .ipa

person aleena1995    schedule 25.09.2018
comment
После выполнения этих шагов и успешного создания ipa я больше не могу запускать приложение в режиме отладки через симулятор iOS, любые советы @ aleena1995 - person Arthur; 08.04.2019
comment
Вы изменили Scheme на DEBUG и jsCodeLocation обратно на старую? @Arthur - person aleena1995; 09.04.2019
comment
Да, я закончил тем, что отменил все изменения, которые у меня были, есть ли простой способ использовать оба варианта и иметь возможность отказаться от сборок отладки и выпуска? Мое текущее решение - просто продолжать отладку, вносить все изменения для выпуска, сборки и возврата - person Arthur; 09.04.2019
comment
Вы можете использовать следующий код, чтобы jsCodeLocation был выбран в зависимости от конфигурации сборки. Пожалуйста, проверьте обновленное решение @Arthur - person aleena1995; 11.04.2019
comment
@ aleena1995 Есть ли ограничения на создание IPA таким способом? Срок действия приложения истечет через фиксированный промежуток времени? - person Chan Jing Hong; 29.06.2019

Вы можете запустить эти команды в каталоге ios.

xcodebuild clean archive -scheme <Scheme> -configuration Release -archivePath ../builds/<App>.xcarchive DEVELOPMENT_TEAM=<DevTeam> PROVISIONING_PROFILE=<PROVISIONING_PROFILE> CODE_SIGN_IDENTITY=<CODE_SIGN_IDENTITY>
xcodebuild -exportArchive -archivePath ../builds/<App>.xcarchive -exportPath ../builds/ -exportOptionsPlist ./iosExportOptions.plist 

и iosExportOptions.plist может быть чем-то вроде

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>method</key>
  <string>app-store</string>
  <key>teamID</key>
  <string>{TEAM_ID}</string>
</dict>
</plist>

Важно отметить, что если вы используете cocoapods, вам нужно создавать, используя рабочую область, а не проект. Добавление этого флага к первой команде гарантирует, что вы нацеливаетесь на рабочую область -workspace <AppName>.xcworkspace.

Вы также можете оформить заказ на fastlane. https://fastlane.tools/

OR

Вы можете заполнить все детали, такие как DEVELOPMENT_TEAM и т. Д., В Xcode и Product - ›Архив https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/TestingYouriOSApp/TestingYouriOSApp.html

person agenthunt    schedule 08.02.2017
comment
Это единственный способ экспортировать IPA через командную строку? Или мы получим какой-либо интегрированный параметр командной строки с react-native? - person Vighnesh Pai; 09.03.2018
comment
На данный момент параметры с встроенной только реакцией строят .app, как указано в другом ответе - person agenthunt; 10.03.2018