/var/mobile/Applications
を検索するより簡単な方法でiOSアプリケーションへのパスを取得できますか?名前またはバンドルIDに基づいてiOSアプリケーションへのパスを取得する
私は名前とバンドル識別子の両方を知っていますが、パスはさまざまなiOSデバイスで一貫していません。
これは脱獄の微調整に使用するため、Appleが許可していないPrivateFrameworksやその他のコードを使用できます。
/var/mobile/Applications
を検索するより簡単な方法でiOSアプリケーションへのパスを取得できますか?名前またはバンドルIDに基づいてiOSアプリケーションへのパスを取得する
私は名前とバンドル識別子の両方を知っていますが、パスはさまざまなiOSデバイスで一貫していません。
これは脱獄の微調整に使用するため、Appleが許可していないPrivateFrameworksやその他のコードを使用できます。
Springboardで実行されるコードを実行している場合は、これはかなり簡単です。 SBApplicationController
のsharedInstance
を取得し、SBApplication
をapplicationWithDisplayIdentifier:
メソッド(または選択した方法を問わず)で探してください。 SBApplication
クラスには、path
,containerPath
およびbundle
(多くの中でも)のプロパティが含まれています。そのうちの1つは、探しているものです。私はこれを試したことがないので、動作するかどうかは保証できませんが、Springboardのヘッダーファイル(ヘッダーファイルはhereに表示されるか、自分でダンプすることができます)をすばやく参照してください。
一方、Springboardから実行していない場合(つまり、実際のApp Storeスタイルのアプリケーションを作成している場合)、運が悪い可能性があります。あなたはSpringboardとのプロセス間通信を調べ、そこで何かができるかどうかを見ることができますが、それはおそらくそれが価値よりも面倒です。
アプリで実行されている場合は、定義することができます。
extern NSString* SBSCopyBundlePathForDisplayIdentifier(NSString* bundleId);
とリンクをSpringboardServices
フレームワークに。
それとも、ライブラリAppListを使用することができますし、それはだ:アンドリューR.はあなたのための彼の答えに言及しているものをやっている。この場合
ALApplicationList *al = [ALApplicationList sharedApplicationList];
NSString *appPath = [al valueForKey:@"path" forDisplayIdentifier:bundleID];
。 (私は同じ要望が必要である、つまりSpringboardから実行している必要があると仮定します)
[iPhoneDevWiki](http://iphonedevwiki.net/index.php/SBApplication) – Spookbuster