2014-09-11 4 views
10

С последними изменениями в xcode 6, похоже, что файл .app и папка с документами больше не находятся в той же папке в каталоге симулятора iPhone.Xcode 6/iOS 8 Синтаксис данных и сценарий папки Bundle

Ранее мы можем получить доступ к файлу каталога и .app в

/Users/me/Library/Application Support/iPhone Simulator/7.1/Applications/SomeCrpyticNumber 

но в Xcode 6, каталог Тренажер полностью отличается:

~/Library/Developer/CoreSimulator/Devices/CrypticNumber1/data/Containers/Bundle/CrypticNumber2/MyApp.app 

и

~/Library/Developer/CoreSimulator/Devices/CrypticNumber1/data/Containers/Data/CrypticNumber3/Documents  

где CryptNumber 1,2 и 3 все разные. Есть ли способ, по которому я могу получить соответствующую папку Documents после того, как найду папку, содержащую файл .app? Я "возникают проблемы с этим.

почему ...?

Если я построил приложение на ИОС 7 тренажере, каталог документов и файлов .app находятся в той же папке, по крайней мере, как и раньше, но IOS 8 разделяет их

Единственное решение, которое я могу думать прямо сейчас на пары 2 папки, которые имеют самые последние даты создания/модификации

Edit:..

на стороне записки, этот инструмент очень полезно для поиска ваших папок симулятора на xcode 6 сейчас: http://simpholders.com/

+0

попробуйте [это] (http://nsrover.wordpress.com/2014/11/28/ios8-simulator-documents-directory/) – NSRover

ответ

10

Это также подтачивало меня. Я не смог решить это на 100%, но я создал быстрое и грязное приложение, чтобы немного помочь. Я всегда могу найти каталог устройств, но я еще не нашел способ надежно отслеживать каталоги пакетов/песочницы. Источник: https://github.com/somegeekintn/SimDirs

Редактировать: пошел вперед и начал сканирование mobile_installation.log, чтобы найти дополнительные места. Кажется, все это находит.

+0

Это выглядит великолепно. Я также делаю что-то похожее на то, что у вас есть, но у меня нет графического интерфейса. Сейчас я просто использую simulator_app = "$ (find" ~/Library/Developer/CoreSimulator/Devices "-name" $ project_name.app ")" \t full_path_to_app = "$ (dirname" $ ​​simulator_app ")", чтобы найти каталог для приложения, но я бы предположил, что мы хотели бы сопоставить дату создания этой папки с другой папкой, чтобы найти пакет каталог. – kevinl

+1

Вы также можете использовать root/data/Library/Logs/MobileInstallation/mobile_installation.log.0. Кажется, он записывает информацию об установке и удалении приложения. Должен быть более постоянный отчет об этом, где бы вы ни думали. –

+1

Я использую скрипт, который соответствует идентификатору пакета с номером в '.com.apple.mobile_container_manager.metadata.plist', как представляется, достаточно надежным. –

1

Я столкнулся с той же проблемой, когда я сохранил полный путь, используя CoreData. При получении полного пути он возвращает null, потому что UUID папки документа различен при каждом перезапуске приложения. Следующее является моим разрешением:

  1. Убедитесь, что в CoreData хранится только относительный путь документа/файла. Например. магазин «Files/image.jpg» вместо «/Users/yourname/.../Applications/UUID/Document/Files/image.jpg».
  2. Используйте следующие действия для получения места приложения документа:

    [[[NSFileManager defaultManager] URLsForDirectory: NSDocumentDirectory inDomains: NSUserDomainMask] lastObject];

  3. Объедините оба # 2 и # 1, чтобы получить полный путь к документу/файлу, который вы хотите получить.
Вы можете обратиться к компании Apple Developer Примечание: https://developer.apple.com/library/ios/technotes/tn2406/_index.html

1

Существует отличный плагин для Xcode, что позволяет открыть каталог для любого приложения вы хотите. Это называется ZLGotoSandboxPlugin, и вы можете установить его через Alcatraz. Этот плагин добавляет специальное подменю в меню «Файл» Xcode (я там скрыл несколько имен приложений): The plugin menu.

Мне очень удобно.

Смежные вопросы