2012-03-24 3 views
4

/var/mobile/Applications을 검색하는 것보다 iOS 응용 프로그램에 대한 경로를 얻는 쉬운 방법이 있습니까?이름 또는 번들 식별자를 기반으로 iOS 응용 프로그램의 경로를 가져옵니다.

이름과 번들 식별자를 모두 알고 있지만 경로가 다른 iOS 기기에서 일관되지 않습니다.

이것은 탈옥을위한 비틀기에 사용하기 위해 Apple에서 허용하지 않는 PrivateFrameworks 및 다른 코드를 사용할 수 있습니다.

답변

4

스프링 보드에서 실행되는 코드를 실행하는 경우 상당히 간단해야합니다. SBApplicationControllersharedInstance을 얻은 다음 applicationWithDisplayIdentifier: 방법으로 (또는 선택한 방법을 사용하여) 찾고있는 SBApplication을 얻으십시오. SBApplication 클래스는 path, containerPathbundle (많은 항목 중에서)에 대한 속성을 포함하며, 그 중 하나가 사용자가 찾고 있어야합니다. 나는 이것을 시도하지 않았으므로, 작동 할 것이라고 보장 할 수는 없지만, Springboard 헤더 파일 (머리글 파일을 직접 덤프하거나 here을 볼 수 있음)을 한 눈에 보면 작동 할 것이다.

반면에 스프링 보드에서 실행하지 않는 경우 (즉, 실제 App Store 스타일 응용 프로그램을 만드는 경우) 운이 좋지 않을 수 있습니다. Springboard와의 프로세스 간 의사 소통을 살펴보고 거기에서 수행 할 수있는 작업이 있는지 알아볼 수도 있지만, 가치가있는 것보다 더 어려울 것입니다.

+0

[iPhoneDevWiki] (http://iphonedevwiki.net/index.php/SBApplication) – Spookbuster

3

응용 프로그램에서 실행되는 경우에, 당신은 정의 할 수 있습니다 :

extern NSString* SBSCopyBundlePathForDisplayIdentifier(NSString* bundleId); 

와 링크를 SpringboardServices 프레임 워크.

2

또는 라이브러리 AppList를 사용하고 그것의 :

ALApplicationList *al = [ALApplicationList sharedApplicationList]; 
NSString *appPath = [al valueForKey:@"path" forDisplayIdentifier:bundleID]; 

이 경우 앤드류 R. 당신을 위해 그의 대답에 언급하는 일입니다. (동일한 요구 사항이 필요하다고 가정합니다. 즉, 스프링 보드에서 실행해야합니다.)

관련 문제