iOS 7 to iOS 8: Change of Directory Hierarchy

Transition from iOS 7 to iOS 8, this is big transition such like before iOS 6 to iOS 7. But 7 to 8 is invisible and deep. I think iOS 8 is focus to Security, Coordination other application or devices including PC and New age devices?

At first, we lost development target directories about iOS Simulator. It is changed.
This change is not huge impact to end-user because a device can install only a OS, and this transition is invisible. But developer and testing environment has to this change.

Since Xcode 5

~/Library/Application Support/iPhone Simulator/

You can find each OS version folders,

/Applications
Here is the area of your original applications. Your App has each unique ID. Under the folder, your app (.app) and more,

/Applications/Documents/
Here is Documents folder you hope. CloudBoat use this folder for database and resource store.

/Applications/Library/
This folder includes Preferences of application and caches.

Xcode5

From Xcode 6

~/Library/Developer/CoreSimulator/Devices/
You will see lots of encoded folders here. It means iOS 8 manage each iOS version based difference ID folders. So, if you application covered multi iOS version, which has to check, manage, store more then 2 folders. Then CloudBoat has to restore duplicate resources each iOS 7 and iOS 8.

Xcode6

Check device.plist each folders

Here is still Device level, you should dig more deep. But at this time, check device.plist for testing device profile. You can find device-type, name, and runtime.
device

iOS 7 Folder Hierarchy

Of course same look folders.

/Applications
Here is the area of your original applications. Your App has each unique ID. Under the folder, your app (.app) and more,

/Applications/Documents/
Here is Documents folder you hope. CloudBoat use this folder for database and resource store.

/Applications/Library/
This folder includes Preferences of application and caches.

Xcode6-iOS7

iOS 8 Folder Hierarchy

Big change is here. iOS 8 separate Application and Documents, also OS level managed objects and original files.

/Documents/
Here is OS level Documents folder, here doesn’t include any original folders.

/Containers/
Here is the area of original files.

/Containers/Bundle/Application/
Here is the area of original application. Your App has each unique ID. You can find your app (.app), but only the app. Therefore application is able to keep security, nothing conflict each other, never disturb to documents.

/Containers/Data/Application/
Finally here is original folders area. Each folders have unique ID, unfortunately this name is not as same as application’s for security reason. You must find out your target folder.

/Containers/Data/Application/Documents/
Here is Documents folder you hope. CloudBoat use this folder for database and resource store.

/Containers/Data/Application/Library/
This folder includes Preferences of application and caches. This folder is useful for looking for your original.
Xcode6-iOS8


iOS 7からiOS 8への移行は、iOS 6からiOS 7への時と同様、かなり大きなインパクトがあります。目に見えない部分で、非常に大きなシフトが見られます。特に、iOS 8はセキュリティと、アプリケーション、またはデバイス(PCや、まだ登場していない新時代のものも含めて)との連係を意図しているように感じられます。

フォルダ構造が変化したため、まず最初に、過去の開発環境で使い慣れたiOSシミュレーターでのテストに混乱が生じます。
この変化は、エンド・ユーザーには影響はありません。デバイスにはひとつのOSしかインストールできませんし、移行は見えない場所でスムーズに行われています。
開発やテストでは、テストすべき場所を見失わないよう、注意が必要です。

Xcode 5まで

~/Library/Application Support/iPhone Simulator/

ここに、各iOSのバージョンに分かれたフォルダがあります。

/Applications
ここがオリジナル・アプリケーションのある場所です。固有のIDを設定されて、アプリケーション(.app) がここに見つかるはずです。

/Applications/Documents/
書類フォルダ(Documents) はここに位置します。CloudBoatのデータベースとリソースはここに関連します。

/Applications/Library/
ここに、アプリケーションの設定とキャッシュが含まれます。

Xcode5

Xcode 6から

~/Library/Developer/CoreSimulator/Devices/
まずここに、多数のIDがセットされたフォルダがあります。iOS 8は、それぞれのiOSのバージョンとデバイスを、個別に管理しています。仮に、開発したアプリケーションが複数のiOSをサポートする場合、2つ以上のフォルダをチェックすることになります。Documentsの内容は別個に必要です。開発テストのために、CloudBoatは、iOS 7とiOS 8のために、複数のリソースを必要とします。

Xcode6

device.plistを確認する

まだこの段階はデバイス・レベルです。ここから、さらに深い階層に入っていきます。
この時点で、device.plistを確認します。device-type, name, runtimeといった名前で、各フォルダが何のデバイスの、どのiOSのためにあるのかが判ります。
device

iOS 7フォルダ構造

iOS 7に関しては、ここから先は、もちろんXcode 5と変更はありません。

/Applications
ここにオリジナル・アプリケーション(.app)が、固有のIDを設定されて存在するはずです。

/Applications/Documents/
書類フォルダ(Documents) はここに位置します。CloudBoatのデータベースとリソースはここに関連します。

/Applications/Library/
ここに、アプリケーションの設定とキャッシュが含まれます。

Xcode6-iOS7

iOS 8フォルダ構造

もっとも大きな変化はここです。iOS 8は、アプリケーションと書類が、OSレベルと固有アプリケーションのレベルが、完全に分断されました。

/Documents/
ここは、OSレベルの書類フォルダ(Documents)です。ここに固有のファイルは存在しません。

/Containers/
ここに、オリジナルのアプリケーションが入れられる領域があります。

/Containers/Bundle/Application/
ここにオリジナル・アプリケーション(.app)が、固有のIDを設定されて存在するはずです。ですが、ここは.appファイルのみです。この分断によって、アプリケーションはセキュリティが維持され、他のアプリケーションと連係が期待でき、他のアプリケーションの書類を干渉したりしないことが保証されていると考えられます。

/Containers/Data/Application/
ここがアプリケーションの保存領域です。各フォルダには固有のIDが設定されています。残念ながら、このIDはアプリケーションとはまったく別物です。

/Containers/Data/Application/Documents/
書類フォルダ(Documents) はここに位置します。CloudBoatのデータベースとリソースはここに関連します。

/Containers/Data/Application/Library/
ここに、アプリケーションの設定とキャッシュが含まれます。おそらく、自身のフォルダを探すには、この設定フォルダから見つけるのがもっとも便利です。
Xcode6-iOS8