ios - 从 Xcode 项目中导出 .ipa 文件而无需打开 Xcode

标签 ios xcode cordova xcodebuild

我们有一个 API,用户可以调用它来创建 Cordova 应用程序/项目,上传他们的 www 目录,然后开始编译并下载可执行二进制文件。然后这个二进制文件将进入私有(private)应用商店。

我在 iOS 的编译步骤上遇到了问题。 Cordova 构建步骤没有问题,但它不会像 Android 那样输出二进制文件。在阅读了我在 Stackoverflow 和其他地方找到的所有内容后,计划是这样的:

xcodebuild clean -configuration Release -alltargets
xcodebuild -scheme MyApp archive -archivePath build/MyApp
xcodebuild -exportArchive -exportFormat ipa -archivePath "build/MyApp.xcarchive" -exportPath "MyApp.ipa" -exportProvisioningProfile "My Prov Profile"

鉴于签名身份和所有设置都正确,它几乎可以正常工作。第一个命令执行正常。第二个命令只是挂起。

但是,如果我在 Xcode 中打开项目,然后执行命令,它会编译和导出,并且我会得到一个 .ipa 文件,这正是我想要的。好像是Xcode在第一次打开工程的时候就设置了一个workspace和一些scheme相关的东西。

有什么方法可以让 xcodebuild(或 xcrun,或其他任何东西)为我创建这个工作区文件?

或者有其他方法可以解决这个问题吗?

现在,我有一个解决方案,我实际打开 Xcode 项目,等待 15 秒,然后继续。但是我可以想到一千种在某个时候会失败的方法,所以我想把它改成更优雅的东西。

如果相关的话,我目前安装了 Xcode 6.3。


更新:下面 Opal 的回答让我走上了正确的道路(我认为)。我最终做的是根据 Opal 的链接导出共享方案,并将其用作 future 应用程序的模板。解决方案是这样的:

# Copy shared scheme file into directory
mkdir /path/to/project/dir/MyApp.xcodeproj/xcshareddata
mkdir /path/to/project/dir/MyApp.xcodeproj/xcshareddata/xcschemes
cp data/MyScheme.xcscheme /path/to/project/dir/MyApp.xcodeproj/xcshareddata/xcschemes/.

# Use sed to replace app name in scheme file
sed -i '' "s/%app_name%/MyApp/g" MyApp.xcodeproj/xcshareddata/xcschemes/MyScheme.xcscheme

# CD into directory
cd /path/to/project/dir

# Move files from Cordova to our build directory
cp -r CordovaLib/build/* build/.

# Build and export
xcodebuild clean -configuration Release -alltargets
xcodebuild -scheme MyScheme archive -archivePath build/MyApp
xcodebuild -exportArchive -exportFormat ipa -archivePath "build/MyApp.xcarchive" -exportPath "MyApp.ipa" -exportProvisioningProfile "MyProvProfile"

最佳答案

您尝试构建的应用程序似乎没有共享方案。方案如果不共享,则在项目加载到 xcode 时创建。要创建共享方案,请参阅 this网站。

关于ios - 从 Xcode 项目中导出 .ipa 文件而无需打开 Xcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29741925/

相关文章:

ios - iPhone 3.5 英寸屏幕 - 4 英寸屏幕 :

html - 将 HTML 转换为带有标签的字符串

ios - Objective c iphone - 如何区分生产构建与 qa/debug testng 构建

javascript - Sencha Touch 对比 Backbone.js

ios - 在 UILabel 中更改字体时 UILabel 大小计算不正确

iOS - 添加新 View /按下按钮切换 View

处于暂停状态的 iPhone 应用程序,通过 URL 启动,显示 Default.png

swift - 单元格中的 TextView 具有自动大小

javascript - PhoneGap (Cordova) 应用程序在加载谷歌图表 API 时崩溃

Android 上的 Javascript onKeyPress 键代码始终为 0