bestsource

Xcode 6 iPhone Simulator 응용 프로그램 지원 위치

bestsource 2023. 5. 4. 20:07
반응형

Xcode 6 iPhone Simulator 응용 프로그램 지원 위치

Xcode 6에서는 코어 데이터를 사용하는 앱이 있지만 iOS 8 아이폰 시뮬레이터의 애플리케이션 지원에 폴더가 없습니다.내 파일과 코어 데이터 SQLite 데이터베이스는 어디에 저장됩니까?

시뮬레이터 디렉토리가 Xcode 6 베타 버전으로 이동되었습니다.

~/Library/Developer/CoreSimulator

앱의 Documents 폴더로 디렉토리를 탐색하는 것은 다음과 같은 작업을 수행하는 것이 더 어렵습니다.

~/Library/Developer/CoreSimulator/Devices/4D2D127A-7103-41B2-872B-2DB891B978A2/data/Containers/Data/Application/0323215C-2B91-47F7-BE81-EB24B4DA7339/Documents/MyApp.sqlite

SimPolders를 사용하여 SimPolders 파일을 찾는 것이 좋습니다.시뮬레이터 앱을 추적하고 폴더와 콘텐츠로 직접 이동할 수 있는 메뉴 모음 항목입니다.대박입니다.

Simulator Manager 응용 프로그램이 매우 유용하다는 것을 알게 되었습니다.설치된 시뮬레이터의 응용 프로그램 폴더로 직접 이동합니다.7.1, 8.0 및 8.1 시뮬레이터를 사용해 보았습니다.

Simulator Manager는 시스템 트레이에 아이콘으로 상주하며 "Launch At Login(로그인 시 실행)" 옵션을 제공합니다.

여기에 이미지 설명 입력

참고: 이 기능은 Xcode 6(내 경우 6.1.1) 이상에서만 작동합니다.

도움이 되길 바랍니다!

.sqlite 파일이 AppDelegate.m에 저장된 위치를 알려면 다음 코드를 추가합니다.

- (NSURL *)applicationDocumentsDirectory
{
    NSLog(@"%@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory      inDomains:NSUserDomainMask] lastObject]);

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

이제 AppDelegate.m에서 이 메서드를 호출합니다.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

  //call here
   [self applicationDocumentsDirectory];

}

이것은 저에게 신속하게 효과가 있었습니다.

let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
println("App Path: \(dirPaths)")

저는 이것과 얼마 동안 씨름했습니다.단순히 제 지역의 SQLite db로 이동하는 것은 큰 고통이 되었습니다.저는 이 스크립트를 작성하여 XCode 내부의 코드 스니펫으로 만들었습니다.나는 그것을 내 앱 안에 배치합니다. 내 앱 대리인 안에 실행을 마쳤습니다.


//xcode 6 moves the documents dir every time. haven't found out why yet. 

    #if DEBUG 

         NSLog(@"caching documents dir for xcode 6. %@", [NSBundle mainBundle]); 

         NSString *toFile = @"XCodePaths/lastBuild.txt"; NSError *err = nil; 

         [DOCS_DIR writeToFile:toFile atomically:YES encoding:NSUTF8StringEncoding error:&err]; 

         if(err) 
            NSLog(@"%@", [err localizedDescription]);

         NSString *appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"];   

         NSString *aliasPath = [NSString stringWithFormat:@"XCodePaths/%@", appName]; 

         remove([aliasPath UTF8String]); 

         [[NSFileManager defaultManager] createSymbolicLinkAtPath:aliasPath withDestinationPath:DOCS_DIR error:nil]; 

     #endif

이렇게 하면 드라이브 루트에 심링크가 생성됩니다. (처음에 이 폴더를 직접 생성하여 chmod하거나 다른 위치로 위치를 변경할 수 있습니다.)그런 다음 xcodeway 플러그인 https://github.com/onmyway133/XcodeWay 을 설치했습니다.

cmd+d를 누르면 현재 응용 프로그램의 영구 문서 디렉터리에 대한 파인더 와인더가 열리도록 약간 수정했습니다.이러한 방식으로 XCode는 경로를 몇 번 변경하든 실행 시에만 변경되며 각 실행 시마다 SIMLink를 즉시 업데이트합니다.

저는 이것이 다른 사람들에게 유용하기를 바랍니다!

오픈파인더>라이브러리>개발자>코어시뮬레이터>장치들

그런 다음 파인더에서 배열 변경 아이콘 추가 날짜 선택

앱 선택 > 데이터 > 컨테이너 > 데이터 > 애플리케이션 >

앱 선택 > 문서 >여기 당신의 db 파일입니다.

내 경우:

/Users/pluto/Library/Developer/CoreSimulator/Devices/A75107D2-A535-415A-865D-978B2555370B/data/Containers/Data/Application/265A12BC-FF5B-4235-B5EF-6022B83754B4/Documents/dboPhotoBucket.sqlite

그렇지 않으면 다음을 수행합니다.

NSLog(@"app dir: %@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]); 

데이터 폴더의 전체 경로가 인쇄됩니다.

스위프트:

let dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
println("App Path: \(dirPaths)")

파인더 사용-->폴더로 이동하고 지정된 기본 경로를 입력하여 응용프로그램 폴더에 도달합니다.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;

NSLog(@"%@",basePath);

시뮬레이터는 파일을 ~/Library/Developer/CoreSimulator/Devices/...에 넣지만, /Devices 이후의 경로는 모두 다릅니다.

이 편리한 방법을 사용하세요.현재 사용자의 임시 디렉터리 경로를 반환하고 인수를 사용하지 않습니다.

NSString * NSTemporaryDirectory ( void );

따라서 ViewController 클래스에서는 CoreData 저장 파일을 가져와야 할 때 참조용으로 이 행을 ViewDidLoad에 입력합니다.이게 도움이 되길 바랍니다.

  NSLog(@"FILE PATH :%@", NSTemporaryDirectory());

(참고: 경로로 이동하려면 파인더 메뉴에서 이동을 클릭하고 ~/라이브러리를 입력하여 숨겨진 디렉터리를 연 다음 파인더 창에서 콘솔에 표시된 경로를 클릭할 수 있습니다.)

이 위치가 다시 변경되었습니다. Swift를 사용하는 경우 이 위치를 사용하여 폴더 위치를 확인하십시오(이 위치는 Apple에서 생성한 AppDelegate.swift 파일에서 복사한 것이므로 컴퓨터에서 작동하지 않는 경우 해당 파일에서 올바른 구문을 검색하고 Xcode 6.1 및 iOS 8 시뮬레이터를 사용하여 내 파일에서 작동합니다).

let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
println("Possible sqlite file: \(urls)")

시뮬레이터는 다음 아래에 있습니다.

~/Library/Developer/CoreSimulator/

여기서는 UUID 이름을 가진 디렉터리로 나열됩니다.'수정된 날짜'별로 정렬하여 최신 날짜를 찾습니다.내부 탐색 위치:

/data/Containers/Data/Application/

여기서 해당 장치의 모든 응용 프로그램 목록을 볼 수 있습니다.이것을 다시 정렬하여 최신 앱을 얻을 수 있습니다.

참고: Xcode는 앱을 실행할 때마다 디렉터리 이름을 변경하므로 바탕 화면에 별칭/바로 가기를 만드는 데 의존하지 마십시오.

가장 쉬운 방법은 자동으로 모든 것을 수행하는 을 여기서 사용하는 것입니다.

저는 시뮬레이터용으로 제작된 최신 앱의 압축을 풀고 데스크톱에 압축하는 스크립트를 만들었습니다.

https://gist.github.com/Gerst20051/8ca49d5afbf09007b3696fab6e9f425c

#!/bin/bash

DESTINATION_DIR="$HOME/Desktop"
APP_PATH=$(find ~/Library/Developer/CoreSimulator/Devices/*/data/Containers/Bundle/Application/*/*.app -type d -maxdepth 0 -print0 | xargs -0 ls -td | head -n1)
APP_DIRNAME=$(dirname "$APP_PATH")
APP_BASENAME=$(basename "$APP_PATH")
FILE_NAME="${APP_BASENAME%.*}"

cd "$APP_DIRNAME"
zip -qr "$DESTINATION_DIR/$FILE_NAME.zip" "$APP_BASENAME"

Swift 4 또는 Swift 5에서 사용할 수 있습니다.NSHomeDirectory().

Xcode 10(또는 Xcode 11)에서 가장 쉬운 방법은 앱을 일시 중지하고(예: 중단점에 도달할 때) 디버거 콘솔에서 다음 행을 실행하는 것입니다.

po NSHomeDirectory()

po인쇄 개체를 나타내며 대부분의 항목을 인쇄합니다.

 1.   NSTemporaryDirectory() gives this:

    /Users/spokaneDude/Library/Developer/CoreSimulator/Devices/1EE69744-255A-45CD-88F1-63FEAD117B32/data/Containers/Data/Application/199B1ACA-A80B-44BD-8E5E-DDF3DCF0D8D9/tmp

 2. remove "/tmp" replacing it with "/Library/Application Support/<app name>/"  --> is where the .sqlite files reside
  1. Swift 4를 사용하면 아래 코드를 사용하여 앱의 홈 디렉토리를 가져올 수 있습니다.앱의 문서 디렉터리가 거기에 있습니다.

    print(NSHomeDirectory())

  2. 앱의 홈 디렉터리가 변경 가능하다는 것을 이미 알고 있을 것이므로 코드베이스에 추가 코드를 추가하고 싶지 않다면 SimFolder가 좋은 도구입니다.

  3. 또한 앱의 홈 디렉토리를 변경한 후 매번 동일한 SQLite 데이터베이스를 닫고 다시 여는 시간을 절약할 수 있는 도구가 있는지 궁금할 수 있습니다.정답은 '예'입니다. 제가 알고 있는 툴은 SQLiteFlow입니다.문서를 보면 다음과 같습니다.

    데이터베이스 파일 이름 또는 디렉토리 변경을 처리합니다.따라서 SQLiteFlow는 iOS 시뮬레이터에서 SQLite 데이터베이스와 쉽게 작동할 수 있습니다.

여기 마지막으로 사용한 시뮬레이터와 애플리케이션의 sh가 있습니다.sh를 실행하고 인쇄된 텍스트를 복사한 다음 show in finder 명령을 붙여넣고 실행하면 됩니다.

#!/bin/zsh

lastUsedSimulatorAndApplication=`ls -td -- ~/Library/Developer/CoreSimulator/Devices/*/data/Containers/Data/Application/*/ | head -n1`

echo $lastUsedSimulatorAndApplication

언급URL : https://stackoverflow.com/questions/24290989/xcode-6-iphone-simulator-application-support-location

반응형