XcodeプロジェクトのBuild Phases
にカスタムBash Run Script
があります。それはplistに正式なバージョン番号を書きます。XcodeビルドフェーズBash実行スクリプト内のスペースと特殊文字の処理
#proper escape for spaces
TARGET_BUILD_DIR=${TARGET_BUILD_DIR//" "/"\ "}
echo "Setting marketing version, CFBundleShortVersionString, to $VERSION in $TARGET_BUILD_DIR/$INFOPLIST_PATH..."
/usr/libexec/PlistBuddy -c "Set CFBundleShortVersionString $VERSION" $TARGET_BUILD_DIR/$INFOPLIST_PATH
echo "Setting technical version, CFBundleVersion, to $BUILD in $TARGET_BUILD_DIR/$INFOPLIST_PATH..."
/usr/libexec/PlistBuddy -c "Set CFBundleVersion $BUILD" $TARGET_BUILD_DIR/$INFOPLIST_PATH
パスにスペースや特殊文字が含まれていない場合は、問題ありません。ここで
は、このコードを呼び出そうとしたときに何が起こるかです:
は1.7.0.0 で/Users/jenkins/.jenkins/jobs/ClientName/jobs/iOS/jobsに、マーケティングのバージョン、CFBundleShortVersionStringを設定します/ What's Up/workspace/build/WhatsUp.app/Info.plist ...ファイルが存在しません。 作成:/Users/jenkins/.jenkins/jobs/ClientName/jobs/iOS/jobs/What 無効です引数
テクニカルバージョンCFBundleVersionを199に設定 /Users/jenkins/.jenkin s/jobs/ClientName/jobs/iOS/jobs /とは何ですか? 上に/ workspace/build/WhatsUp.app/Info.plist ...ファイルが存在しません。 作成:/Users/jenkins/.jenkins/jobs/ CLIENTNAME /ジョブ/ iOS版/仕事/何 無効な引数
エコーがうまくディレクトリをピックアップしますが、問題のディレクトリを使用しようとすると、エラーが返されますPlistBuddy
。
これまでのところ、私は「\」でスペースや特殊文字をエスケープするようなものの数を試してみました:
#replace spaces attempt
TARGET_BUILD_DIR=${TARGET_BUILD_DIR//" "/"\ "}
TARGET_BUILD_DIR=${TARGET_BUILD_DIR// /\ }
#replace apostrophes attempt
TARGET_BUILD_DIR=${TARGET_BUILD_DIR//"'"/"\'"}
TARGET_BUILD_DIR=${TARGET_BUILD_DIR//'/\'}
が、私はスペースや特殊文字を含むディレクトリを受け入れるようにPlistBuddyを取得するために行うには何がありますか?
引用あなたの変数の展開:個別
"$TARGET_BUILD_DIR"
と"$INFOPLIST"
を引用はトリックをしました。 –