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

时间:2014-06-05 13:06:10

标签: cordova deployment ipa

我创造了一个' helloworld'使用documentation cordova的iOS应用。当我运行cordova emulate ios时,该应用成功运行。我无法做的是在我运行cordova build --release时进行部署。它不会在那里创建任何.ipa个文件。我找到的只是Helloworld.build目录中的PROJECT_ROOT/platforms/ios/build文件。我在这里错过了什么吗?

5 个答案:

答案 0 :(得分:66)

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

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。首先是Mohiuddin Ahmed的Ruby脚本,它会改变我的xcodeproj文件。我不确定这是否必要,但我不这么认为。

XCode 8更新:正如评论者所指出的,PackageApplication已从XCode 8中删除。要更新流程,请参阅问题:What's the replacement for Xcode's PackageApplication?

根据评论的建议,通过添加cordova build命令编辑澄清流程。

答案 1 :(得分:41)

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

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

答案 2 :(得分:5)

我终于找到了一种使用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 :)

答案 3 :(得分:1)

您可以尝试http://fir.im中的新工具。

他们有一个用红宝石写的fir cli工具。您可以使用以下命令安装它:

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

注册一个帐户(所有免费的,如旧的testflight)并从您的个人资料中获取令牌。从命令提示符运行:

fir login

提供您的令牌。

CD到你的.xcodeproj所在的目录中。

fir build_ipa . 

一段时间后(如果构建成功),您将在./build_ipa文件夹中找到您的ipa。

答案 4 :(得分:0)

其他所有方法都不适合我,但这对我有用

cordova build ios

然后

cordova run ios --device

.ipa文件位于

myPrject/platforms/ios/build/device/myProject.ipa

build.json(设置自动同步)

{
    "ios": {
        "debug": {
            "codeSignIdentity": "iPhone Developer",
            "developmentTeam": "FG35JLLMXX4A",
            "packageType": "development",
            "automaticProvisioning": true,
            "buildFlag": [
                "EMBEDDED_CONTENT_CONTAINS_SWIFT = YES",
                "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES=NO",
                "LD_RUNPATH_SEARCH_PATHS = \"@executable_path/Frameworks\""
            ]
        },
        "release": {
            "codeSignIdentity": "iPhone Developer",
            "developmentTeam": "FG35JLLMXX4A",
            "packageType": "app-store",
            "automaticProvisioning": true,
            "buildFlag": [
                "EMBEDDED_CONTENT_CONTAINS_SWIFT = YES",
                "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES=NO",
                "LD_RUNPATH_SEARCH_PATHS = \"@executable_path/Frameworks\""
            ]
        }
    }
}

参考docs

Voila!