2012-09-30 4 views
9

Faccio release si basa chiamando:PhoneGap come fare un build di rilascio dalla riga di comando

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

Ma per le applicazioni PhoneGap ottengo questo errore:

** 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)

Quando provo:

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

ottengo:

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)

Se chiamo cordova/debug ->** BUILD SUCCESS **, ma il mio .app è compilato in modalità Debug. Come posso creare una build di rilascio sulla riga di comando?

+0

Puoi approfondire un po 'la tua domanda? Stai parlando di generare un iPA? –

+0

No, solo ".app'. Ma potremmo generare '.ipa' con esso, sarò anch'io interessante. – CAMOBAP

+0

Ok. Se la tua app è configurata per usare cordova, allora il comando sopra dovrebbe funzionare. Qual è il vero problema che stai affrontando? –

risposta

1

Ho trovato la soluzione - l'utilità cordova è una chiave. Ma abbiamo bisogno di fare alcuni passi per prepararlo:

  1. sceneggiatura metti in 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); 
    } 
    

    Ma ficca app_name, sign_crt_name e provision_path variabili a seconda che si ha bisogno di

  2. Run cordova build ios --release --device

  3. Utilizzare $PWD/platforms/ios/build/device/HelloWorld.ipa per livrea o installa via cmd con il grande strumento ideviceinstaller

-1

Sono stato in grado di creare da riga di comando utilizzando il parametro CONFIGURATION_BUILD_DIR nel comando xcodebuild e specificando la directory di compilazione vuota. Sembra che i file creati da XCode siano in conflitto con il comando xcodebuild

+0

Se davvero puoi costruire l'app Phonegap, ti preghiamo di fornire script, e accetterò la tua risposta – CAMOBAP

3

Ho avuto lo stesso identico problema. Non so se la mia soluzione si applica al tuo problema. Comunque, ecco come l'ho risolto: suppongo che tu stia usando il sottoprogramma cordova dal tuo progetto Xcode. Controlla se hai lo stesso nome di configurazione per il progetto cordova.

Ad esempio: quando la configurazione di rilascio per il progetto principale è denominata "ReleaseAdHoc", assicurarsi che il subroject cordova abbia anche una configurazione con questo nome. Inoltre, assicurarsi di selezionare queste configurazioni per il processo "Archivia" per entrambi, il progetto principale e il sottoprogetto.

Spero che questo aiuti.

+0

Grazie! Ho aggiunto la configurazione "Adhoc" al mio progetto principale e mi chiedevo perché si lamenta del file 'AppDelegate.d' mancante. – szimek

+0

Non ho specificato alcun set di configurazione e lo stesso errore è ancora in arrivo. Qualche idea ? – matthisb