2012-09-30 42 views
9

我做發佈版本通過調用:的PhoneGap如何從命令行做一個發佈版本

xcodebuild -project HelloWorld -sdk iphoneos5.1 -configuration Release install 

但PhoneGap的應用程序我得到這個錯誤:當我嘗試

** BUILD FAILED **

The following build commands failed: CompileC build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/AppDelegate.o Phonefinch/Classes/AppDelegate.m normal armv6 objective-c com.apple.compilers.llvm.clang.1_0.compiler (1 failure)

xcodebuild -project HelloWorld -sdk iphoneos5.1 -configuration Release clean build 

我得到:

2012-10-04 22:51:52.776 xcodebuild[20016:4107] DVTAssertions: Warning in /SourceCache/IDEXcode3ProjectSupport/IDEXcode3ProjectSupport-1559/Xcode3Sources/XcodeIDE/Frameworks/DevToolsBase/pbxcore/SpecificationTypes/XCGccMakefileDependencies.m:87 Details: Failed to load dependencies output contents from ``/Users/camobap-mac/Projects/Phonefinch/build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/AppDelegate.d''. Error: Error Domain=NSCocoaErrorDomain Code=260 "The file 「AppDelegate.d」 couldn’t be opened because there is no such file." UserInfo=0x400eabf40 {NSFilePath=/Users/camobap-mac/Projects/Phonefinch/build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/AppDelegate.d, NSUnderlyingError=0x40079c140 "The operation couldn’t be completed. No such file or directory"}. User info: { NSFilePath = "/Users/camobap-mac/Projects/Phonefinch/build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/AppDelegate.d"; NSUnderlyingError = "Error Domain=NSPOSIXErrorDomain Code=2 \"The operation couldn\U2019t be completed. No such file or directory\""; }. Function: void XCGccMakefileDependenciesParsePathsFromRuleFile(NSString *, void (^)(NSString *)) Thread: {name = (null), num = 7} Please file a bug at http://bugreport.apple.com with this warning message and any useful information you can provide. ** BUILD FAILED **

The following build commands failed: CompileC build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv7/AppDelegate.o Phonefinch/Classes/AppDelegate.m normal armv7 objective-c com.apple.compilers.llvm.clang.1_0.compiler CompileC build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/AppDelegate.o Phonefinch/Classes/AppDelegate.m normal armv6 objective-c com.apple.compilers.llvm.clang.1_0.compiler (2 failures) 2012-10-04 22:52:04.887 xcodebuild[20016:4f0f] DVTAssertions: Warning in /SourceCache/IDEXcode3ProjectSupport/IDEXcode3ProjectSupport-1559/Xcode3Sources/XcodeIDE/Frameworks/DevToolsBase/pbxcore/SpecificationTypes/XCGccMakefileDependencies.m:87 Details: Failed to load dependencies output contents from ``/Users/camobap-mac/Projects/Phonefinch/build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/MainViewController.d''. Error: Error Domain=NSCocoaErrorDomain Code=260 "The file 「MainViewController.d」 couldn’t be opened because there is no such file." UserInfo=0x400ef6e40 {NSFilePath=/Users/camobap-mac/Projects/Phonefinch/build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/MainViewController.d, NSUnderlyingError=0x400ef24a0 "The operation couldn’t be completed. No such file or directory"}. User info: { NSFilePath = "/Users/camobap-mac/Projects/Phonefinch/build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/MainViewController.d"; NSUnderlyingError = "Error Domain=NSPOSIXErrorDomain Code=2 \"The operation couldn\U2019t be completed. No such file or directory\""; }. Function: void XCGccMakefileDependenciesParsePathsFromRuleFile(NSString *, void (^)(NSString *)) Thread: {name = (null), num = 10} Please file a bug at http://bugreport.apple.com with this warning message and any useful information you can provide. ** BUILD FAILED **

The following build commands failed: CompileC build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/AppDelegate.o Phonefinch/Classes/AppDelegate.m normal armv6 objective-c com.apple.compilers.llvm.clang.1_0.compiler CompileC build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/MainViewController.o Phonefinch/Classes/MainViewController.m normal armv6 objective-c com.apple.compilers.llvm.clang.1_0.compiler (2 failures)

如果我打電話cordova/debug - >** BUILD SUCCESS **,但我的.app是以調試模式編譯的。我如何在命令行上構建發佈版本?

+0

你能對你的問題有點闡述安裝?您是否在談論生成iPA? –

+0

不,只是'.app'。但是我可能用它產生'.ipa'我也會感興趣。 – CAMOBAP

+0

好的。如果你的應用程序設置爲使用科爾多瓦,那麼上述命令應該工作。你面臨的實際問題是什麼? –

回答

1

我找到解決方案 - cordova實用程序是一個關鍵。但是,我們需要做一些步驟來準備它:

  1. 添加腳本hooks/after_build/010_sign_ios.js

    #!/usr/bin/env node 
    
    var app_name = "HelloWorld"; 
    var sign_crt_name = "iPhone Distribution: My company Group BV"; 
    var provision_path = "$PWD/Ad_Hock_Distribution_Helloworld.mobileprovision"; 
    
    var output_ipa_path = "$PWD/platforms/ios/build/device/" + app_name + ".ipa"; 
    var sys = require('sys'); 
    var exec = require('child_process').exec; 
    
    var cliCommand = process.env.CORDOVA_CMDLINE; 
    var isRelease = (cliCommand.indexOf('--release') > -1); 
    var isDevice = (cliCommand.indexOf('--device') > -1); 
    var platform = process.env.CORDOVA_PLATFORMS; 
    
    if (platform === 'ios' && isDevice && isRelease) { 
        function puts(error, stdout, stderr) { 
         sys.puts(stdout) 
        } 
    
        exec("xcrun -sdk iphoneos PackageApplication " + 
         "-v \"$PWD/platforms/ios/build/device/" + app_name + ".app\" " + 
         "-o \"" + output_ipa_path + "\" " + 
         "--sign \"" + sign_crt_name + "\" " + 
         "--embed \"" + provision_path + "\"", puts); 
    } 
    

    app_namesign_crt_nameprovision_path變量會根據你的需要解決

  2. 運行cordova build ios --release --device

  3. 使用$PWD/platforms/ios/build/device/HelloWorld.ipa去de制服或通過CMD由大ideviceinstaller工具

-1

我能夠通過在xcodebuild命令中使用CONFIGURATION_BUILD_DIR參數並指定空的構建目錄從命令行構建。似乎XCode構建的文件與xcodebuild命令衝突

+0

如果你真的可以構建Phonegap應用程序,請提供腳本,我會接受你的回答 – CAMOBAP

3

我有完全相同的問題。我不知道我的解決方案是否適用於您的問題。然而,這是我如何解決它:我想你正在Xcode項目中使用cordova子項目。檢查cordova項目是否具有相同的配置名稱。

例如:當您的主項目的發佈配置稱爲「ReleaseAdHoc」時,請確保您的cordova子項目也具有此名稱的配置。此外,請確保爲主項目和子項目的「存檔」過程選擇這些配置。

希望這會有所幫助。

+0

謝謝!我爲我的主項目添加了「Adhoc」配置,並想知道爲什麼它會抱怨缺少AppDelegate.d文件。 – szimek

+0

我沒有指定配置集,並且完全相同的錯誤仍然出現。有任何想法嗎 ? – matthisb

相關問題