问题
With the latest changes to xcode 6, it looks like the .app file and document folder no longer resides in the same folder in the iPhone simulator directory.
Previously, we can access the directory and .app file at
/Users/me/Library/Application Support/iPhone Simulator/7.1/Applications/SomeCrpyticNumber
but in Xcode 6, the simulator directory is completely different:
~/Library/Developer/CoreSimulator/Devices/CrypticNumber1/data/Containers/Bundle/CrypticNumber2/MyApp.app
and
~/Library/Developer/CoreSimulator/Devices/CrypticNumber1/data/Containers/Data/CrypticNumber3/Documents
where CryptNumber 1,2, and 3 are all different. Is there a way where I can get the corresponding Documents folder after I find the folder that contains the .app file? I"m having trouble with this.
why...?
If I built the app on an iOS 7 simulator, the documents directory and .app file are in the same folder atleast like before, but iOS 8 separates them.
The only solution I can think of right now is to pair up 2 folders that have the latest creation/modification dates.
Edit:
on a side note, this tool is very useful for finding your simulator folders on xcode 6 now: http://simpholders.com/
回答1:
This has been bugging me as well. I've not been able to solve it 100% but I created a quick and dirty app to help a bit. I can always find the device directory, but I've not yet found a way to track down the bundle / sandbox directories reliably. Source: https://github.com/somegeekintn/SimDirs
Edit: Went ahead and started scanning mobile_installation.log to find additional locations. Seems to find everything now.
回答2:
I faced the same issue when I stored the full path using CoreData. When retrieving the full path, it return null because the document folder UUID is different every time the app restarts. Following is my resolution:
- Make sure storing only the relative path of the document / file in CoreData. E.g. store "Files/image.jpg" instead of "/Users/yourname/.../Applications/UUID/Document/Files/image.jpg".
- Use the following to retrieve the app document location:
[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
- Concatenate both #2 and #1 to get the full path of the document / file you want to retrieve.
回答3:
There is a great plugin for Xcode, that allows you to open the directory for any app you want. It's called ZLGotoSandboxPlugin, and you can install it via Alcatraz. This plugin adds a special submenu to the Xcode's "File" menu (I've hidden several app names there):
I find it rather convenient.
来源:https://stackoverflow.com/questions/25794747/xcode-6-ios-8-simulator-data-and-bundle-folder-script