아이폰 시뮬레이터는 데이터를 어디에 저장합니까?
앱 데이터를 저장하는 데 사용하는 SQLite DB를 가지고 있으며, 문제를 디버깅하기 위해 내부를 살펴 볼 수 있습니다. 하지만 iPhone Simulator는 일반적으로 데이터를 어디에 저장합니까?
Xcode6+/iOS8+의 경우
~/라이브러리/개발자/코어 시뮬레이터/디바이스/[디바이스]ID]/데이터/컨테이너/데이터/어플리케이션/[AppID]/
SDK 3.2에 대한 정답 - SDK 4는 해당 경로의 /User 폴더를 시뮬레이션할 수 있는 각 기존 iPhone OS/iOS 버전의 번호로 대체하므로 경로는 다음과 같습니다.
~/도서관/애플리케이션 지원/아이폰 시뮬레이터/[OS version]/응용프로그램/[appGUID]/
이전 SDK를 함께 설치한 경우 3.1.x 시뮬레이터는 다음 위치에 데이터를 계속 저장합니다.
~/도서관/애플리케이션 지원/아이폰 시뮬레이터/사용자/애플리케이션/[appGUID]/
가장 쉬운 방법.
어딘가에서 중단점을 잡으십시오.(또는 Najdan Tomici가 댓글에 언급한 것처럼 프로그램 실행 일시 중지(디버깅 영역에서 일시 중지 탭)
콘솔 창에 입력
결과:
(lldb) po NS홈디렉토리() /사용자/사용자명/도서관/개발자/코어시뮬레이터/디바이스/4734F8C7-B90F-4566-8E89-5060505E387F/자료/자료/응용/395818BB-699F-AA-0683759D
터미널 없이 앱 데이터가 어디에 있는지 찾을 수 있는 또 다른 방법이 방법은 다음과 같습니다.
- 시뮬레이터에서 앱 실행
- 활동 모니터 열기
- CPU 탭에서 앱 이름 찾기
- 두 번 클릭하고 "파일 및 포트 열기"를 엽니다.
발견:
~/Library/Application Support/iPhone Simulator/User/
iOS 8 ~/라이브러리/개발자/코어 시뮬레이터/디바이스/[디바이스 ID]/데이터/애플리케이션/[appGUID]/문서/
온 라이온 더 라이온Users/[username]/Library
숨겨져 있습니다.
파인더에서 간단히 보려면 화면 상단의 '이동' 메뉴를 클릭하고 'alt' 키를 누른 상태에서 '라이브러리'를 표시합니다.
'라이브러리'를 클릭하면 이전에 숨겨둔 라이브러리 폴더를 볼 수 있습니다.
이전에 조언한 내용:
사용하다
chflags nohidden /users/[username]/library
터미널에서 폴더를 표시합니다.
Simulator가 실행 중인 경우 앱의 컨테이너 경로를 얻을 수 있습니다.
xcrun simctl get_app_container booted <app bundle identifier>
출력 예:
$ xcrun simctl get_app_container booted com.example.app
/Users/jappleseed/Library/Developer/CoreSimulator/Devices/7FB6CB8F-63CB-4F27-BDAB-884814DA6FE0/data/Containers/Bundle/Application/466AE987-76BC-47CF-A207-266E65E7DE0A/example.app
"message"는 대부분의 경우에 대체될 수 있습니다.simctl
장치 UDID가 필요한 모든 위치에서 명령을 실행할 수 있습니다.
다음을 사용하여 장치 목록을 볼 수 있습니다.xcrun simctl list
를사하여용특명대도봅니다움을말한으로 .xcrun simctl help
.
업데이트: Xcode 8.3의 일반적인 요청에 따라 "app", "data", "groups" 또는 앱 그룹 식별자를 추가하여 원하는 컨테이너 종류를 지정할 수 있습니다.
데이터 컨테이너를 가져오는 방법
$ xcrun simctl get_app_container booted com.example.app data
Xcode 5에서는 아래 코드를 사용할 수 있습니다.
#import <Foundation/NSFileManager.h>
그리고:
NSString *homeDir = NSHomeDirectory();
NSLog(@"%@",homeDir);
결과는 다음과 같습니다.
"/Users/<your user name>/Library/Application Support/iPhone Simulator/7.1/Applications/hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh"
에▁where디hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh
앱을 입니다.iOS 앱을 식별하는 일부 16진수 문자열입니다.
시뮬레이터 내에서 앱이 어디에 있는지 찾는 가장 쉬운 방법 중 하나입니다.사용자 "N 임시 디렉토리()"
단계-
- 앱 내 아무 곳에나 브레이크포인트를 적용하고 앱을 실행합니다.
앱이 중단점에서 멈추면 Xcode 콘솔에 다음 명령을 입력합니다.
pnN 임시 디렉터리()
이제 임시 폴더까지의 정확한 경로를 확인할 수 있습니다.돌아가서 모든 앱 관련 폴더를 볼 수 있습니다.
이것도 도움이 되길 바랍니다.해피 코딩 :)
Xcode 6.0은 적어도 iOS 8 시뮬레이터를 위해 이 위치를 다시 한 번 이동한 것으로 보입니다.
~/라이브러리/개발자/코어 시뮬레이터/디바이스/[디바이스]ID]/데이터/컨테이너/데이터/어플리케이션/[앱]신분증]
Xcode가 시뮬레이터 및 런타임을 저장하는 위치
런타임
$ open ~/Library/Developer/CoreSimulator/Profiles/Runtimes
예:iOS 13.0
,watchOS 6.0
이것들은 가장 많은 공간을 차지합니다.합니다. 5GB까지 가능합니다.
장치들
$ open ~/Library/Developer/CoreSimulator/Devices
예:iPhone Xr
,iPhone 11 Pro Max
이들은 일반적으로 각각 15MB 미만입니다.
설명.
시뮬레이터는 런타임과 장치 간에 분할됩니다.실행하는 경우$ xcrun simctl list
개요를 볼 수 있지만 시뮬레이터의 물리적 위치를 찾으려면 제가 보여드린 디렉토리를 보십시오.
지원하지 않는 런타임은 삭제해도 무방합니다.원하는 경우 나중에 다시 설치할 수 있습니다.
간단히 다음 작업을 수행합니다.
NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
NSLog(@"%@", docDirPath);
그리고 다음과 같은 생각을 하게 될 것입니다.
/Users/admin/라이브러리/개발자/코어 시뮬레이터/디바이스/58B5B431-D2BB-46F1-AFF3-DFC789D189E8/데이터/컨테이너/데이터/어플리케이션/6F3B985F-351E-468F-9CFD-BC21725AFB/문서
거기로 가면 XCode 버전에 상관없이 앱의 문서 폴더가 보일 것입니다. ("폴더로 이동..Finder에서 명령하고 경로 "~/라이브러리"를 지정합니다.
문자열 경로에 대한 빠른 버전:
let docDirPath =
NSSearchPathForDirectoriesInDomains(.documentDirectory,
.userDomainMask, true).first
print(docDirPath)
및 폴더 URL:
let docDirUrl =
FileManager.default.urls(for: .documentDirectory,
in: .userDomainMask).first
print(docDirUrl)
iOS 5:
/Users/[사용자 이름]/도서관/애플리케이션 지원/아이폰 시뮬레이터/5.0/애플리케이션/[AppGUID]/
Xcode 4.6의 경우 다음 경로에 저장됩니다.
/Users/[currentuser]/도서관/응용프로그램 지원/아이폰 시뮬레이터/6.1/응용프로그램/
프로그래밍 방식으로 확인하려면 다음 코드를 사용합니다.
NSLog(@"path:%@",[[NSBundle mainBundle]bundlePath]);
iOS 8의 경우
Documents 폴더를 찾으려면 Documents 폴더에 파일을 쓸 수 있습니다.
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"Words.txt"];
NSString *content = @"Apple";
[content writeToFile:fileName atomically:NO encoding:NSStringEncodingConversionAllowLossy error:nil];
라고 말하다, 에.didFinishLaunchingWithOptions
.
그런 다음 터미널을 열고 다음 폴더를 찾을 수 있습니다.
$ find ~/Library -name Words.txt
macOS Catalina의 경우 다음과 같이 DB를 찾았습니다.
~/Library/Developer/CoreSimulator/Devices/{deviceId}/data/Containers/Data/Application/{applicationId}/Documents/my.db
다음 정보를applicationId
폴더를 수정된 날짜별로 정렬했지만 더 나은 방법이 있을 것입니다.
아직도 사자에서 이 문제를 겪고 있는 사람이 있다면 ~/라이브러리 디르를 볼 수 있는 19가지 팁이 포함된 훌륭한 기사가 있습니다.여기에서 댄 프레이크의 기사를 찾아보세요. http://www.macworld.com/article/161156/2011/07/view_library_folder_in_lion.html
시뮬레이터의 디렉토리는 아래와 같습니다.
~/도서관/애플리케이션 지원/아이폰 시뮬레이터/사용자/
저는 이 프로그램과 관련이 없지만, 만약 당신이 이것들 중 하나라도 찾는다면 심폴더스는 믿을 수 없을 정도로 쉽게 할 수 있습니다.
Xcode를 자주 사용하지 않는 반응 네이티브 사용자의 경우, 그냥 사용할 수 있습니다.find
터미널을 열고 데이터베이스 이름으로 검색합니다.
$ find ~/Library/Developer -name 'myname.db'
정확한 이름을 모르는 경우 와일드카드를 사용할 수 있습니다.
$ find ~/Library/Developer -name 'myname.*'
아래 코드를 사용해 볼 수 있습니다.
NSString *fileName = @"Demo.pdf";
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *pdfFileName = [documentsDirectory stringByAppendingPathComponent:fileName];
NSLog(@"File path%@",pdfFileName);
시뮬레이터에서 xCode로 빌드한 App 위치의 사전을 열려면 다음을 수행합니다.
- 파인더 창 열기(웃는 얼굴 아이콘)
- 그런 다음 이동 -> 폴더로 이동을 클릭합니다.
- 유형: ~/도서관/애플리케이션 지원/아이폰 시뮬레이터
- 디렉터리는 여러 시뮬레이터의 iOS 버전입니다.
- 하위 디렉터리는 시뮬레이터에 설치된 앱입니다.
- Documents 폴더는 사용자가 iCloud에 백업하는 컨텐츠를 생성한 곳입니다.
언급URL : https://stackoverflow.com/questions/1108076/where-does-the-iphone-simulator-store-its-data
'source' 카테고리의 다른 글
C# 또는 VB.NET을 사용하여 현재 로컬 호스트 이름을 가져오려면 어떻게 해야 합니까? (0) | 2023.06.01 |
---|---|
셸 스크립팅에 루비를 어떻게 사용합니까? (0) | 2023.06.01 |
다중 인증 사용자 계정을 위한 MongoDB 스키마 설계 (0) | 2023.06.01 |
이진 파일과의 Git 충돌 해결 (0) | 2023.06.01 |
변수가 정수인지 확인하는 중 (0) | 2023.06.01 |