1

コマンドラインツールに依存するアプリを実装しています。
これは、実行するプリセットがいくつかあるためです。
コマンドラインツールは、アプリに必要なすべての初期情報を含むsqliteファイルを作成する役割を果たします(明確に言えば、アプリに初期データを追加するための単なるツールです)。

問題は、デバッグ中にすべてが正常に機能することですが、リリースビルドを実行すると、いくつかのエラーが発生します。
最初のエラーは

target specifies product type 'com.apple.product-type.tool', but there's no such
product type for the 'iphoneos' platform"

これは、私のメインアプリがターゲットの依存関係としてコマンドラインツールを持っていたためです。ターゲットの依存関係を削除し、スクリプトの実行フェーズにビルドを追加することで、これを解決しました。

#Build the initial setup target
xcodebuild -target InitialCoreDataSetup -sdk macosx -configuration $CONFIGURATION

#Run initializing data target to get current sqlite file
cd "$CONFIGURATION_BUILD_DIR"
cd ..
cd "$CONFIGURATION"
current_dir=$(pwd)
./InitialCoreDataSetup "$current_dir" "$SRCROOT" "$CONFIGURATION"

ここで問題となるのは、次のエラーが発生することです。

=== BUILD NATIVE TARGET InitialCoreDataSetup OF PROJECT XY WITH CONFIGURATION AdHoc     ===
Check dependencies
SDK Configuration Error: no wrapper for product type @

これを修正する方法がまったくわかりません。助言がありますか?

アプリに最初のsqliteファイルをどのように提供しますか?

助けてくれてありがとう!
編集 現時点では、私のアプリターゲットのビルドフェーズは次のとおりです。 ここに画像の説明を入力してください

4

2 に答える 2

1

ところで:私は最終的に次の行でそれを機能させました:

#Build the initial setup target
export DYLD_FRAMEWORK_PATH="$SYMROOT/Debug"
/usr/bin/env -i xcodebuild -target InitialCoreDataSetup -sdk "macosx" -configuration Debug OBJROOT="$SYMROOT/Debug" SYMROOT="$SYMROOT"
echo "$SYMROOT/Debug"
#Run initializing data target to get current sqlite file
cd "$SYMROOT/Debug"
./InitialCoreDataSetup "$SYMROOT/Debug" "$SRCROOT" "$CONFIGURATION"

秘訣は、常に DEBUG モードで initialCoreDataSetup を開始することです

于 2012-07-12T09:41:58.723 に答える
0

他のビルド ルールが実行される前に、ビルド ルールを使用してスクリプトを実行することで sqllite ファイルを生成できるはずなので、この状況では Xcode にビルドを実行させることをお勧めします。

ここに画像の説明を入力

于 2012-03-15T13:23:54.387 に答える