2009-09-17 39 views
10

私のiPhoneアプリにはいくつかのリソースがあり、コンパイルされると、Xcodeのグループ化の構造にかかわらず、すべてがアプリケーションのリソースフォルダのルートに追加されます。これは大部分の場合は問題ありませんが、アプリケーションのresourcesフォルダのフォルダに構造化する必要があるファイルがあります。Xcodeのビルドとリソースのフォルダ

現時点では、「既存のファイルを追加... - >追加されたフォルダのフォルダ参照を作成」を使用してXcodeにフォルダを追加しました。これは問題なく、Xcodeのフォルダアイコンは黄色ではなく青色です。私の問題は、Xcodeがそれらのフォルダ内に気づいていない、新しいファイルや変更されたファイルではないため、私がプロジェクトをビルドするときに、新しいアプリケーションや変更されたイメージはターゲットアプリケーションのリソースにありません。私がそれを動作させる唯一の方法は、きれいにしてからビルドすることです。私は変更を加えて時々1分に数回再コンパイルするので、かなり面倒です!

私のアプリケーション内で保持したい私のリソース内のフォルダ構造は、いくつかのネストされたファイルとフォルダで構成されています。

変更された、または新しいファイルとフォルダをすべてXcodeに認識させる方法はありますか?

おかげで、

マイク

答えて

10

私の問題は、Xcodeのは気付いて、新しいされていないことですまたはそれらのフォルダ内のファイルを変更したので、私がプロジェクトをビルドするときに、新しいまたは変更されたイメージのいずれもターゲットアプリケーションのリソースにありません。

これは長年にわたるバグです。それはAdiumで働いている間何度も噛まれています。 RadarWebに登録してください。そして、思い出させるために感謝します。自分のバグレポートをx-radar:// problem/7232149(visible to the public in OpenRadar)として提出しました。あなた自身のバグレポートでこのバグ番号を述べるべきです。

回避策として、フォルダ参照を右クリックして「タッチ」を選択して、フォルダが変更されたことをXcodeに伝えることができます。

+0

その情報をありがとう。私は彼らがそれに対処していないとは信じられない!私はフォルダに触れることがうまくいかないと感じています。おそらく、いくつかのネストが含まれているからです。 –

+1

マイケル・ウォーターフォール:はい、プロジェクトに追加した特定のフォルダに触れる必要があります。サブフォルダも含めて、その中の何かに触れることはできません(少なくとも、私が試した最後の時間は、以前はありませんでした)。 –

+0

もう1つの回避策を追加したいと思います。ピーター・ホセイが言ったように私はタッチを選択しようとしましたが、助けにはなりませんでした。私がしたのは、プロジェクトフォルダからフォルダをコピーし、古いフォルダをゴミ箱に移動し、xcodeを再起動して、通常どおりフォルダオプションでファイルをコピーするフォルダを追加することでした。 – Pacu

-1

ディレクトリ構造を維持したい場合は、それがドキュメントディレクトリで行うのがベストです。あなたのアプリの初回起動時に、バンドルのファイルを好みの階層のドキュメントディレクトリにコピーします。

EDIT:明確化の後、おそらくあなたのプロジェクトにいくつかのヘッダー検索パスを追加する必要があるようです。ターゲット情報ペインを開き、ビルドセクションに移動して、ストラクチャのルートフォルダをヘッダ検索パスリストに追加します。再帰チェックし、

+0

問題は、フォルダのフォルダ参照を使用し、そのようにプロジェクトを構築することなく、バンドルには存在しないです。それは私が問題を抱えている建物です。バンドル内のフォルダの処理は問題ありません。私は、すべてのビルドでプロジェクトのファイルにある新しいファイルやフォルダを認識するためにXcodeを必要とするだけで、毎回きれいにしたり再構築しなくてもターゲットにコンパイルできます。 –

+0

私はあなたがヘッダー検索パスで遊ぶべきだと思います – coneybeare

+1

ヘッダー検索パスは、リソースではなく#includeのためのものです。 –

4

良いはずです、私は今日のあなたの最初の問題は自分自身を持っていたし、私はまた、第二の問題について語って、この偉大な記事を見つけた:http://majicjungle.com/blog/?p=123

+0

すばらしいリンクをありがとう。私はスクリプトを使用しようとしましたが、それはサブフォルダ内のファイルに触れていないようです。どのようにそれをサブフォルダの中で再帰的にファイルに触れるようにするか? –

3

私はちょうどこのバグに噛まれました。 ここでの回答は大きな助けとなりました。

私はあまりにも便利なこの他のスレッドで答えを見つけましたが、私はそれが実際に行うには、安全なものであるならば(新しいAPPIDか何かを生成するようです)はよく分からない:

iphone simulator resources not updating

これは私が回避策をとった私の個人的なメモです。

1) Open the project in Xcode 
2) Right-click the folder reference (BLUE folder) in the navigator 
    at its root and pick "Remove Reference" 
3) Close Xcode all the way 
4a) Warning, this step might cause other problems in your project. 
4b) Open the folder browser/Finder 
4c) Navigate to: /users/USERNAME/Library/Application Support/ 
      /iPhone Simulator/version/Applications/THISPROJFOLDER 
4d) Delete this whole THISPROJFOLDER. The name of the folder may be all 
    numbers, but this clears the Xcode "Cache" so it will rebuild things 
5) Find the actual folder where you store your pictures that were referenced, 
    and move the folder elsewhere and rename it. 
6) Now open Xcode 
7) In Xcode, select Product -> Clean. It should clean successfully. 
8) Now run the program through Xcode. It should run, but (hopefully) crash or 
    otherwise fail because it doesn't detect the resource files you removed. 
9) Now go standard Xcode usage and add the files back to the folder you want, 
    and add a reference to that folder in the Xcode navigator. Run the program 
    again, and it should detect the UPDATED PDFfiles/Imagefiles. 

EDIT: さて、私は上記のピーターHoseyの記事から「答え」の指示に従って、それはあまりにも動作します。私のステップ4(必須)はアプリのキーなどを再生しているようだから、おそらく私のソリューションより優れているはずです。

だからここに私はピーターのポスト次のXcode 4.0でそれを固定方法は次のとおりです。

1) Open your project in Xcode 
2) Select the main project root item in the Navigator 
3) Select "Build Phases" in the main pane 
4) Select "Add Build Phase" button -> "Add Run Script" 
5) Reposition he "Run Script" entry bar in the screen, 
    and move it to just-before the Copy Bundle Resources area 
6) Edit the run-script you just added in the main pane: 
    : Set Shell to: /bin/sh (its the default, or try /bin/tsch) 
    : Set the script line to: touch -cm ${SRCROOT}/MyDocs 
    (Set it to your folder root area, matching the Blue Folder 
    area in your Navigator) 
7) Save it all and select "Product -> Clean" to clean project 
+0

誰でもこれを使用すると助けになることができます。..../bin/sh /:悪いインタプリタ:ディレクトリではありません – LmC

関連する問題