根据名称或包标识获取iOS应用程序的路径
问题描述:
有没有比搜索/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