有沒有比搜索/var/mobile/Applications
更簡單的方式獲取iOS應用程序的路徑?根據名稱或包標識獲取iOS應用程序的路徑
我知道名稱和包標識符,但路徑在不同的iOS設備上不一致。
這是用於越獄調整,所以我可以使用PrivateFrameworks和Apple不允許的其他代碼。
有沒有比搜索/var/mobile/Applications
更簡單的方式獲取iOS應用程序的路徑?根據名稱或包標識獲取iOS應用程序的路徑
我知道名稱和包標識符,但路徑在不同的iOS設備上不一致。
這是用於越獄調整,所以我可以使用PrivateFrameworks和Apple不允許的其他代碼。
如果您正在運行在Springboard中執行的代碼,這應該相當簡單。獲取SBApplicationController
的sharedInstance
,然後通過applicationWithDisplayIdentifier:
方法(或使用您選擇的任何方法)獲得您正在尋找的SBApplication
。 SBApplication
類包含path
,containerPath
和bundle
(等等)的屬性,其中之一應該是您要查找的內容。我沒有自己嘗試過,所以我不能保證它能正常工作,但基於Springboard頭文件的快速瀏覽(你可以看看here,或者自己轉儲頭文件),它應該可以工作。另一方面,如果你不是從Springboard運行(即,如果你正在製作一個實際的App Store風格的應用程序),那麼你可能會運氣不好。您可以考慮與Springboard進行進程間通信,看看是否可以在那裏完成某些工作,但它可能比它的價值更麻煩。
如果一個應用程序運行時,您可以定義:
extern NSString* SBSCopyBundlePathForDisplayIdentifier(NSString* bundleId);
,並鏈接到SpringboardServices
框架。
或者您可以使用該庫AppList,然後它的:
ALApplicationList *al = [ALApplicationList sharedApplicationList];
NSString *appPath = [al valueForKey:@"path" forDisplayIdentifier:bundleID];
在這種情況下,它做什麼安德魯R.在他的回答對你提到。 (我假設需要相同的要求,即必須從Springboard運行。)
請參閱[iPhoneDevWiki](http://iphonedevwiki.net/index.php/SBApplication) – Spookbuster 2014-09-28 13:52:33