如何使用'cordova build ios --release'部署(创建.ipa)iphone应用程序?

MD.*_*med 56 deployment ipa cordova

cordova使用那里的文档创建了一个'helloworld'iOS应用程序.我运行时应用程序成功运行cordova emulate ios.我不能做的是在我跑步的时候进行部署cordova build --release.它不会.ipa在那里创建任何文件.我找到的只是Helloworld.build目录中的一个文件PROJECT_ROOT/platforms/ios/build.我在这里错过了什么吗?

Dav*_*urt 71

我发现这个命令对我有用:

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

资料来源:http://www.splinter.com.au/xcode-4-command-line-builds-of-iphone-apps/

我确实跑了@MD.首先是Mohiuddin Ahmed的Ruby脚本,它会改变我的xcodeproj文件.我不确定这是否必要,但我不这么认为.

XCode 8的更新:正如评论者所指出的,PackageApplication已从XCode 8中删除.要更新该过程,请参阅问题:Xcode的PackageApplication的替代品是什么?

编辑通过添加cordova build注释建议的命令来澄清过程.

  • 正确答案.只是为了澄清:运行`cordova build ios --device`在`platforms/ios/build/device`中生成应用程序 (13认同)

jce*_*ile 45

如果您使用的是cordova ios 3.9.0或更高版本,则可以使用此命令.ipa直接从CLI 创建,无需额外命令:

cordova build ios --device --release
Run Code Online (Sandbox Code Playgroud)

您需要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"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

要获取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"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

  • 我说的是配置文件(.mobileprovision)UUID,而不是设备UUID (2认同)

MD.*_*med 5

我终于想出了一种通过使用xcodeproj,xcode和这个ruby脚本来实现自动化的方法:

require 'xcodeproj'
xcproj = Xcodeproj::Project.open("HelloWorld.xcodeproj")
xcproj.recreate_user_schemes
xcproj.save
Run Code Online (Sandbox Code Playgroud)

然后在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
Run Code Online (Sandbox Code Playgroud)

以为我们可以签署我们的.ipa后来:)