2

ヘルパー アプリが埋め込まれたアプリを作成しています。アプリがビルドされるたびに両方のアプリのバンドル バージョンがインクリメントされるように、Xcode の動作を構成しています。問題は、毎回ビルド フォルダーをクリーンアップしない限りN、アプリのバージョンN - 1がヘルパーのバージョンを取得することです。これは単なるバージョン番号の不一致ではありません。ヘルパー アプリのバイナリには、今行った変更が含まれていません。

私の基本的なセットアップは次のようになります。

よりターゲットを絞った方法でビルド フォルダーのクリーニングをシミュレートするために、ヘルパーを追加するファイルのコピー フェーズの直前にスクリプトの実行フェーズで実行される小さな Perl スクリプトを作成しましたが、効果はありませんでした。

use strict;
use warnings;

use File::Path qw(remove_tree);

my $dir = "$ENV{TARGET_BUILD_DIR}/$ENV{WRAPPER_NAME}/Contents/Helpers";
if(-e $dir) {
    remove_tree $dir or die "Can't rmtree $dir: $!";
}

誰が何が起こっているのか知っていますか?ヘルパーとそのホストの同期を維持するにはどうすればよいですか?

4

1 に答える 1

3

スクリプトはコピー フェーズの前に実行されるため、TARGET_BUILD_DIR ではなく BUILD_DIR が必要だと思います。

BUILD_DIR = /Users/gdunham/Library/Developer/Xcode/DerivedData/DC_Wire_Sizer-csvpfesmgmorlhendyncafecwzam/Build/Products
TARGET_BUILD_DIR = /Users/gdunham/Library/Developer/Xcode/DerivedData/DC_Wire_Sizer-csvpfesmgmorlhendyncafecwzam/Build/Products/Debug-iphonesimulator

ヒント: 私は通常、実行スクリプトのビルド フェーズで [ビルド ログに環境変数を表示する] をオンにします。スクリプトから印刷し、ビルド フェーズのトランスクリプトを展開して出力を表示することもできます。ログ ナビゲーターで実行スクリプトを選択し、Xcode のメニューで [エディター] -> [選択したトランスクリプトの展開] を選択します。

于 2013-05-01T17:42:08.623 に答える