it-roy-ru.com

Как я могу развернуть (создать .ipa) приложение для iphone, используя 'cordova build ios --release'?

Я создал приложение iOS 'helloworld' с использованием cordova там документация . Приложение успешно запускается, когда я запускаю cordova emulate ios. Чего я не могу сделать, так это при развертывании, когда я запускаю cordova build --release. Он не создает никаких .ipa файлов там. Все, что я нахожу, это файл Helloworld.build в каталоге PROJECT_ROOT/platforms/ios/build. Я что-то здесь упускаю?

52
MD. Mohiuddin Ahmed

Я нашел эту команду, которая работала для меня:

cordova build ios --device
cd platforms/ios/build/device
/usr/bin/xcrun -sdk iphoneos PackageApplication "$(pwd)/$PROJECT_NAME.app" -o "$(pwd)/$PROJECT_NAME.ipa"

Источник: http://www.splinter.com.au/xcode-4-command-line-builds-of-iphone-apps/

Я запускал @MD. Сначала скрипт Ruby Мохиуддина Ахмеда, который изменил бы мой файл xcodeproj. Я не уверен, было ли это необходимо, но я так не думаю.

Обновление для XCode 8 : Как заметил комментатор, PackageApplication был удален из XCode 8. Чтобы обновить процесс, см. Вопрос: Какая замена для PackageApplication Xcode?

Отредактировано для пояснения процесса, добавив команду cordova build, как это предлагается в комментариях.

67
Dave Burt

Если вы используете cordova ios 3.9.0 или новее, вы можете использовать эту команду для создания .ipa непосредственно из CLI без дополнительных команд:

cordova build ios --device --release

Вам понадобится файл build.json в корне вашего проекта

{
  "ios": {
    "debug": {
      "codeSignIdentity": "iPhone Developer",
      "provisioningProfile": "your-dev-provisioning-profile-UUID-here"
    },
    "release": {
      "codeSignIdentity": "iPhone Distribution",
      "provisioningProfile": "your-distribution-provisioning-profile-UUID-here"
    }
  }
}

Чтобы получить UUID, я открываю файл .mobileprovision в текстовом редакторе и ищу "UUID", не зная, существует ли более простой способ его найти.

Если используется Xcode 8, build.json необходимо поле developmentTeam и поле packageType, но больше не требуется профиль обеспечения, также codeSignIdentity должен быть iPhone Developer для отладки и выпуска:

{
    "ios": {
        "debug": {
            "codeSignIdentity": "iPhone Developer",
            "developmentTeam": "FG35JLLMXX4A",
            "packageType": "development"
        },
        "release": {
            "codeSignIdentity": "iPhone Developer",
            "developmentTeam": "FG35JLLMXX4A",
            "packageType": "app-store"
        }
    }
}

http://cordova.Apache.org/docs/en/6.x/guide/platforms/ios/index.html#using-buildjson

41
jcesarmobile

Наконец-то я нашел способ автоматизировать это с помощью xcodeproj , xcode и этого скрипта Ruby:

require 'xcodeproj'
xcproj = Xcodeproj::Project.open("HelloWorld.xcodeproj")
xcproj.recreate_user_schemes
xcproj.save

И затем в каталоге PROJECT_ROOT/platforms/ios/ эта команда помогла мне сгенерировать мой *.ipa:

xcodebuild -project HelloWorld.xcodeproj -exportArchive -exportFormat ipa -archivePath $(pwd)/HelloWorld.xcarchive -exportPath $(pwd)/HelloWorld.ipa CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -alltargets -configuration Release

Думаю, мы можем подписать наш. ipa позже :)

5
MD. Mohiuddin Ahmed

Вы можете попробовать новый инструмент из http://fir.im .

У них есть первый инструмент, написанный на Ruby. Вы можете установить его с помощью следующей команды:

Sudo gem install fir-cli --no-ri --no-rdoc

Зарегистрируйте аккаунт (все бесплатно, как старый добрый testflight) и получите токен из своего профиля. Из вашей командной строки запустите:

fir login

Предоставьте свой токен.

CD в ​​ваш каталог, где находится ваш .xcodeproj.

fir build_ipa . 

Через некоторое время (в случае успешной сборки) вы найдете свой ipa в своей папке ./build_ipa.

1
Joel Chu