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

Posted

技术标签:

【中文标题】如何使用\'cordova build ios --release\'部署(创建.ipa)iphone应用程序?【英文标题】:How can I deploy (create .ipa) iphone app using 'cordova build ios --release'?如何使用'cordova build ios --release'部署(创建.ipa)iphone应用程序? 【发布时间】:2014-07-26 11:57:09 【问题描述】:

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

【问题讨论】:

【参考方案1】:

其他一切都对我不起作用,但这对我有用

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

瞧!

【讨论】:

【参考方案2】:

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

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?

按照 cmets 的建议,通过添加 cordova build 命令进行编辑以阐明流程。

【讨论】:

正确答案。澄清一下:运行cordova build ios --device 以在platforms/ios/build/device 中生成应用程序 是的,使用cordova build ios --device 效果很好 由于某种原因,xcrun 行对我来说不是必需的。我使用的是 Cordova 6,它是否集成到 cordova build ios --device 中?当我运行它时,它似乎使用我的 XCode 设置生成了一个正确签名的 ipa 文件。 似乎 PackageApplication 已从 xcode8 中删除,对我不起作用。【参考方案3】:

如果您使用的是 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

【讨论】:

仅供参考,这对我不起作用。我的意思是它创建了一个 .app 而不是 .ipa 文件。原来我的iOS平台是3.8,现在已经过时了。一个容易犯的错误,所以要小心。 已更新,此功能已添加到 cordova ios 3.9.0 这是更好的选择.. 因为它需要一次设置..!! ! NB/ UUID可以在itunes中通过点击序列号几次或者如果你安装了ios-deploy在终端执行$ ios-deploy -c来找到 我谈论的是配置文件 (.mobileprovision) UUID,而不是设备 UUID【参考方案4】:

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

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

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

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

fir login

提供您的令牌。

将 CD 放入 .xcodeproj 所在的目录。

fir build_ipa . 

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

【讨论】:

注册时不发送验证码【参考方案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 :)

【讨论】:

以上是关于如何使用'cordova build ios --release'部署(创建.ipa)iphone应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

ionic cordova build ios 使用 xcode swift 3 框架安装自定义插件失败

存档成功,但导出失败:cordova build ios --release

带有 Phonegap Build 的 Cordova 插件白名单在 iOS 上不起作用

运行 ionic cordova build ios 时找不到包含的文件

Cordova 5 build 命令正在删除 iOS 设备方向设置

Cordova build ios 没有通过,我没有收到任何错误。