2012-03-24 11 views
4

/var/mobile/Applicationsを検索するより簡単な方法でiOSアプリケーションへのパスを取得できますか?名前またはバンドルIDに基づいてiOSアプリケーションへのパスを取得する

私は名前とバンドル識別子の両方を知っていますが、パスはさまざまなiOSデバイスで一貫していません。

これは脱獄の微調整に使用するため、Appleが許可していないPrivateFrameworksやその他のコードを使用できます。

答えて

4

Springboardで実行されるコードを実行している場合は、これはかなり簡単です。 SBApplicationControllersharedInstanceを取得し、SBApplicationapplicationWithDisplayIdentifier:メソッド(または選択した方法を問わず)で探してください。 SBApplicationクラスには、path,containerPathおよびbundle(多くの中でも)のプロパティが含まれています。そのうちの1つは、探しているものです。私はこれを試したことがないので、動作するかどうかは保証できませんが、Springboardのヘッダーファイル(ヘッダーファイルはhereに表示されるか、自分でダンプすることができます)をすばやく参照してください。

一方、Springboardから実行していない場合(つまり、実際のApp Storeスタイルのアプリケーションを作成している場合)、運が悪い可能性があります。あなたはSpringboardとのプロセス間通信を調べ、そこで何かができるかどうかを見ることができますが、それはおそらくそれが価値よりも面倒です。

+0

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

3

アプリで実行されている場合は、定義することができます。

extern NSString* SBSCopyBundlePathForDisplayIdentifier(NSString* bundleId); 

とリンクをSpringboardServicesフレームワークに。

2

それとも、ライブラリAppListを使用することができますし、それはだ:アンドリューR.はあなたのための彼の答えに言及しているものをやっている。この場合

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

。 (私は同じ要望が必要である、つまりSpringboardから実行している必要があると仮定します)

関連する問題