The application hierarchy changes in iOS 8

As all we know, iOS 8 - iOS 8.1 are able to be jailbroken by pangu jailbreak. After jailbroken my device, I found it is much different from previous iOS version.

The biggest change I have found is that the path of user land applications change from

/var/mobile/Applications/

to

/var/mobile/Containers/Bundle/Application/

But that's not the end.

When install the app which is based on old iOS version, iOS 8 will create a Data folder under /var/mobile/Containers/.

It means that:

Old app (not based on iOS 8 SDK)

real path: /var/mobile/Containers/Bundle/Application/GUID/foo.app

virtual path: /var/mobile/Containers/Data/Application/Another-GUID/foo.app

The virtual path is actually a symbolic link to its real path. To find the documents, tmp and library folders' path on iOS 8, I NSLog the new sandbox path.

NSString *sandboxPath = NSHomeDirectory();
NSLog(@"%@",sandboxPath);

The result is /var/mobile/Containers/Data/Application/441CB57B-1B2F-40EC-AF1F-BED9B8F8AD8B

It seems that applications' data are saved in /var/mobile/Containers/Data/Application/GUID/ on iOS 8.

So we can come a conclusion, on previous iOS version, applications' data saved in /var/mobile/Applications/GUID/Documents[tmp|Library]/ but now are saved in /var/mobile/Containers/Data/GUID/Documents[tmp|Library]/

But the application which build based on iOS 8 SDK, its app bundle is NOT linked in /var/mobile/Containers/Data/Application/GUID/ . So how does iOS store the different path and then link the app bundle with its document folder still remain to see.

Leave a Reply

Your email address will not be published. Required fields are marked *

4 × three =