【IOS】xcode:XcodeがBuildのたびに自動的にリソースを更新することを確保する
XcodeがBuildのたびにリソースを自動的に更新していることを確認します。
Xcodeを使ったことがあるのはすべて知っていて、Xcodeは1つのとても嫌なバグがあって、时にはリソースを更新した后に、本物のデバッグはリソースがまだ古いことを発见して、この时はCleanの后で再びBuildするしかありません.しかし、これは非常に時間を浪費しており、特に大きな工事では、一度にコンパイルするのに数分かかります.この時、プログラマーは不定と言ってmokoを走ります.ccはぶらぶらしてました...
生産性を向上させるためには、Xcode Buildのときにリソースを強制的に更新するスクリプトが必要です.
ディレクトリ構造の決定
まず下図を見て、Xcodeプロジェクトの青いフォルダは、その中のファイルが直接ホストにコピーされ、ディレクトリ構造を維持していることを示しています.だからdata,img,snd.iosディレクトリにはどんな内容があり、本体にもどんな内容がありますか.
Xcodeは、実機のデバッグ時に、まずBuildを行い、生成する.appファイル(実際にはディレクトリですが、Finderにはファイルが表示されています)には、実行可能なファイルとすべてのリソースが含まれています.そしてXcodeはappは実機に転送する、最後に実機で起動する.app.私たちのスクリプトはBuildの時に生成されたことを確認します.appには常に最新のリソースが含まれています.
ここでは、元のリソースファイルが存在するパスと、2つのパスを知る必要があります.appのリソースファイルが存在するパス.
最初のパスは、Xcodeプロジェクトファイルとリソースファイルの相対的な位置に基づいて決定する必要があります.
下図に示すように、プロジェクトのprojにエンジニアリングファイルがあります.iosディレクトリで、リソースファイルはプロジェクトのresディレクトリにあります.最初のパスは、プロジェクトファイルが存在するパス/./res/
Xcodeには多くの環境変数が用意されているため、「プロジェクトファイルが存在するパス」と「.appのリソースファイルが存在するパス」は簡単に決定できます.スクリプトで直接参照すればいいです.
スクリプトの追加
XcodeではBuildでスクリプトコードを指定できますので、Xcodeのプロジェクトを修正し、スクリプトの内容を追加します.
操作手順:
まずXcodeでプロジェクトを選択すると、右側にプロジェクトの設定画面が表示されます.
設定画面からBuild Phasesラベルを選択し、右下のAdd Build Phasesボタンをクリックして「Add Run Script」を選択します.
新しく表示されたRun Scriptバーに次の内容を入力します:#!bash
_TARGET_BUILD_CONTENTS_PATH=$TARGET_BUILD_DIR/$CONTENTS_FOLDER_PATH
echo _TARGET_BUILD_CONTENTS_PATH: $_TARGET_BUILD_CONTENTS_PATH
echo PWD: $PWD
echo Cleaning $_TARGET_BUILD_CONTENTS_PATH/
rm -fr $_TARGET_BUILD_CONTENTS_PATH/data/*
rm -fr $_TARGET_BUILD_CONTENTS_PATH/img/*
rm -fr $_TARGET_BUILD_CONTENTS_PATH/snd.ios/*
mkdir -p $_TARGET_BUILD_CONTENTS_PATH/data/
mkdir -p $_TARGET_BUILD_CONTENTS_PATH/img/
mkdir -p $_TARGET_BUILD_CONTENTS_PATH/snd.ios/
cp -RLp $PWD/../res/data/* $_TARGET_BUILD_CONTENTS_PATH/data/
cp -RLp $PWD/../res/img/* $_TARGET_BUILD_CONTENTS_PATH/img/
cp -RLp $PWD/../res/snd.ios/* $_TARGET_BUILD_CONTENTS_PATH/snd.ios/
重要:Run Scriptバーをドラッグして、リストの2番目の位置(つまりTarget Dependenciesの後ろ)に移動します.最後に下図のように注意事項
スクリプトの内容は、プロジェクトのディレクトリ構造、リソースディレクトリ構造に基づいて調整する必要があります.
時折、Xcodeは、ネイティブデバッグ時にリソースファイルが変更されたことを報告します.このときXcodeを終了して再開すれば良いので、再コンパイルよりもずっと速いです.
- END -
#!bash
_TARGET_BUILD_CONTENTS_PATH=$TARGET_BUILD_DIR/$CONTENTS_FOLDER_PATH
echo _TARGET_BUILD_CONTENTS_PATH: $_TARGET_BUILD_CONTENTS_PATH
echo PWD: $PWD
echo Cleaning $_TARGET_BUILD_CONTENTS_PATH/
rm -fr $_TARGET_BUILD_CONTENTS_PATH/data/*
rm -fr $_TARGET_BUILD_CONTENTS_PATH/img/*
rm -fr $_TARGET_BUILD_CONTENTS_PATH/snd.ios/*
mkdir -p $_TARGET_BUILD_CONTENTS_PATH/data/
mkdir -p $_TARGET_BUILD_CONTENTS_PATH/img/
mkdir -p $_TARGET_BUILD_CONTENTS_PATH/snd.ios/
cp -RLp $PWD/../res/data/* $_TARGET_BUILD_CONTENTS_PATH/data/
cp -RLp $PWD/../res/img/* $_TARGET_BUILD_CONTENTS_PATH/img/
cp -RLp $PWD/../res/snd.ios/* $_TARGET_BUILD_CONTENTS_PATH/snd.ios/