9

次のように呼び出してリリース ビルドを作成します。

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

しかし、PhoneGap アプリの場合、次のエラーが発生します。

** ビルドに失敗しました **

次のビルド コマンドが失敗しました: 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 回の失敗)

私がしようとすると:

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

私は得る:

2012-10-04 22:51:52.776 xcodebuild[20016:4107] DVTAssertions: /SourceCache/IDEXcode3ProjectSupport/IDEXcode3ProjectSupport-1559/Xcode3Sources/XcodeIDE/Frameworks/DevToolsBase/pbxcore/SpecificationTypes/XCGccMakefileDependencies.m:87 の警告: 失敗しました「/Users/camobap-mac/Projects/Phonefinch/build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/AppDelegate.d」から依存関係の出力内容を読み込みます。エラー: エラー ドメイン = NSCocoaErrorDomain コード = 260 "ファイル「AppDelegate.d」は、そのようなファイルがないため、開けませんでした。" UserInfo=0x400eabf40 {NSFilePath=/Users/camobap-mac/Projects/Phonefinch/build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/AppDelegate.d, NSUnderlyingError=0x40079c140 "操作できませんでしたそのようなファイルまたはディレクトリはありません"}. ユーザー情報: { NSFilePath = "/Users/camobap-mac/Projects/Phonefinch/build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/AppDelegate.d"; NSUnderlyingError = "エラー Domain=NSPOSIXErrorDomain Code=2 \"操作を\U2019t 完了できませんでした。そのようなファイル、又はディレクトリはありません\""; }。関数: void XCGccMakefileDependenciesParsePathsFromRuleFile(NSString *, void (^)(NSString *)) スレッド: {name = (null), num = 7} にバグを報告してくださいhttp://bugreport.apple.comで、この警告メッセージと提供できる有用な情報を確認してください。** ビルドに失敗しました **

build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/MainViewController.d''. エラー: エラー ドメイン = NSCocoaErrorDomain コード = 260 「ファイル “MainViewController.d” は、そのようなファイルがないため、開けませんでした。」UserInfo=0x400ef6e40 {NSFilePath=/Users/camobap-mac/Projects/Phonefinch/build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/MainViewController.d, NSUnderlyingError=0x400ef24a0 "操作できませんでしたそのようなファイルまたはディレクトリはありません"}. ユーザー情報: { NSFilePath = "/Users/camobap-mac/Projects/Phonefinch/build/Phonefinch.build/Release-iphoneos/Phonefinch.build/Objects-normal/armv6/MainViewController.d"; NSUnderlyingError = "エラー Domain=NSPOSIXErrorDomain Code=2 \"操作を\U2019t 完了できませんでした。そのようなファイル、又はディレクトリはありません\""; }。関数: void XCGccMakefileDependenciesParsePathsFromRuleFile(NSString *, void (^)(NSString *)) スレッド: {name = (null), num = 10} にバグを報告してくださいhttp://bugreport.apple.comで、この警告メッセージと提供できる有用な情報を確認してください。** ビルドに失敗しました **

次のビルド コマンドが失敗しました: 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 通常の armv6 Objective-C com.apple.compilers.llvm.clang .1_0.compiler (2 回失敗)

cordova/debug->を呼び出し** BUILD SUCCESS **た場合、.appデバッグ モードでコンパイルされます。コマンド ラインでリリース ビルドを作成するにはどうすればよいですか?

4

3 に答える 3

3

私はまったく同じ問題を抱えていました。私の解決策があなたの問題に当てはまるかどうかはわかりません。ただし、これが私がそれを解決した方法です。Xcodeプロジェクト内からcordovaサブプロジェクトを使用していると思います。cordovaプロジェクトの構成名が同じかどうかを確認してください。

例:メインプロジェクトのリリース構成が「ReleaseAdHoc」と呼ばれる場合、cordovaサブプロジェクトにもこの名前の構成があることを確認してください。さらに、メインプロジェクトとサブプロジェクトの両方の「アーカイブ」プロセスにこれらの構成を選択していることを確認してください。

お役に立てれば。

于 2012-11-28T16:47:43.883 に答える
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_nameただし、必要に応じて、sign_crt_nameおよびprovision_path変数を修正します

  2. 走るcordova build ios --release --device

  3. 優れたツール$PWD/platforms/ios/build/device/HelloWorld.ipaで cmd を介して配信またはインストールするために使用しますideviceinstaller

于 2015-12-02T12:28:52.600 に答える