无法为Cordova iOS应用程序生成发布版本

11
我正在使用 Phonegap CLI 3.1XCode5。我想通过命令行生成 iPhone 应用的发布构建版本,我有有效的 分发证书移动配置文件。我希望完全通过命令生成发布版本,不想使用 XCode GUI 或 Phonegap Build。我尝试了很多次 xcodebuild、xcrun 甚至 cordova build 命令,但是没有一个能给我生成发布版本文件(无论是.app 格式还是 .ipa 格式)。
a) xcodebuild -project MyApp.xcodeproj -alltargets -sdk iphoneos7.0 PROVISIONING_PROFILE="PROFILE_UUID.mobileprovision" -configuration Release
** 构建失败 **
以下构建命令失败:
CompileC build/MyApp.build/Release-iphoneos/MyApp.build/Objects-normal/armv7/AppDelegate.o MyApp/Classes/AppDelegate.m normal armv7 objective-c com.apple.compilers.llvm.clang.1_0.compiler
CompileC build/MyApp.build/Release-iphoneos/MyApp.build/Objects-normal/armv7/MainViewController.o MyApp/Classes/MainViewController.m normal armv7 objective-c com.apple.compilers.llvm.clang.1_0.compiler
CompileC build/MyApp.build/Release-iphoneos/MyApp.build/Objects-normal/armv7s/AppDelegate.o MyApp/Classes/AppDelegate.m normal armv7s objective-c com.apple.compilers.llvm.clang.1_0.compiler (3 次失败)
方法2 (使用cordova build和xcrun签名应用程序)
a) cordova build ios -release

通过命令"/Users/Macuser/Desktop/MyApp/platforms/ios/cordova/build"在平台"ios"上编译应用程序 --release。 "ios"平台已成功编译。

b) xcrun -sdk iphoneos PackageApplication -v "build/Release-iphoneos/MyApp.app" -o "build/Release-iphoneos/MyApp.ipa" --sign "iPhone Distribution: NAME (ID)" --embed "PROFILE_UUID.mobileprovision"

错误:无法从'/tmp/iyibGn3aUv/Payload/MyApp.app'读取授权

2个回答

10
问题在于您没有正确的方案。当生成phonegap项目时,它不包含任何方案,因此链接到phonegap文件是不正确的。
在控制台中转到phonegap生成的项目,并输入“xcodebuild -list”,输出结果将显示该项目中没有方案。
在Xcode中打开由PhoneGap生成的项目-这将生成方案。
现在您可以使用xcodebuild构建此项目(记得填写正确的方案名称):
xcodebuild -scheme YOURSCHEMENAME -project MyApp.xcodeproj -alltargets -sdk iphoneos7.0 PROVISIONING_PROFILE="PROFILE_UUID.mobileprovision" -configuration Release 对于持续集成来说,这是一个不好的解决方案,因为您必须启动Xcode GUI以生成方案,但我没有找到其他解决方案。如果有人知道如何使用命令行生成方案,那么请写下来。

1
@coolphon 有没有办法使用命令行生成方案?我正在尝试自动化构建,所以无法像“打开关闭Xcode”那样操作。 - Captain Obvious
5
您可以使用 xcodeproj Ruby gem(即 gem install xcodeproj)和以下小脚本(https://gist.github.com/shanesmith/8b88720c19b910cc9900)自动生成方案。 - ssmith
1
这是一个更长、更详细的答案,请点击此处:https://dev59.com/p3rZa4cB1Zd3GeqP2na-#23901764 - escapedcat
我浪费了几个小时的时间才意识到xcodebuild进程在我的Jenkins中卡住了,只是因为我没有打开它来生成方案。 谢谢你,还有@ssmith! - Alon Amir
显然,在命令行上指定“-scheme”时,不能使用“-alltargets”。 - Marc
显示剩余2条评论

-3

首先,您需要在iTunes Connect中创建您的应用程序(这在您的iOS开发者帐户的成员中心中)。如果您已经创建了您的配置文件和证书,则可以在iTunes Connect中选择正确的配置文件。在这里,您可以为您的应用程序命名,设置价格,编写描述并上传屏幕截图和大型图标。确保填写所有信息并上传应用程序的所有图像。当您完成后,您的应用程序状态将更改为“等待上传”。

在成功在iTunes Connect中创建您的应用程序之后,要生成用于分发的.IPA文件(无论是用于AppStore还是Ad-Hoc),您需要在Xcode中选择文件树中的项目(位于树的顶部)。然后确保您的“目标”被选中到右侧。

选择“构建设置”。然后转到代码签名所在的部分。对于“发布”,请确保选择了正确的iPhone分发身份或配置文件。

在“发布”下面,应该显示“任何iOS SDK”。确保它旁边写着“IOS Distribution”。

如果您在钥匙串中拥有正确的证书和配置文件,现在可以在顶部菜单中选择“产品”>“归档”。

如果项目无法构建,请点击运行按钮来构建您的项目。Xcode 应该会显示正在进行归档。
成功归档后,进入组织器。在顶部菜单中选择“窗口”>“组织器”。现在点击“归档”。
如果你的项目成功归档,你将在这里看到它。首先,你需要通过iTunes Connect验证你的项目。你需要输入你的iOS开发者登录信息。Xcode 5在检测正确配置文件方面做得很好,所以你应该能看到它。
如果你的应用程序验证成功,那么你可以将其分发到App Store或作为Ad-Hoc分发。这取决于你使用哪个配置文件。
这是分发本机或Phonegap应用程序的流程。无论是哪种方法,都没有关系,我都建过。
我建议这样做,以防你的应用程序不能验证。然后,Xcode就会告诉你需要解决什么问题。接下来,修复所有问题。创建一个新的归档并重试,直到它被验证。

2
正如我之前所提到的,我不想使用Xcode GUI功能。我知道如何使用XCode GUI构建发布和Adhoc应用程序。我不想打开Xcode。我想使用命令行完成相同的操作,例如使用xcodebuild、xcrun或cordova build命令。 - Aarush

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接