2011-01-10 23 views
5

私が知っている限り(とどこでも読める)、アプリケーションのドキュメントディレクトリはiPhoneの/var/mobile/Library/のどこかにあるはずですが、入手したディレクトリをログに記録している場合は/var/mobile/Documentsです。iPhoneアプリのドキュメントディレクトリ/ var/mobile/Documentsまたは/ var/mobile/Library/AppNameはありますか?

次のように私はディレクトリを取得:私はここでSettings.xmlという名前のファイルを作成するか、/ etc私のアプリで何か間違っているんだ場合

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

が問題とこれですか。?

情報:私はiOS 4.2.1のjailbroken iPhone 4を持っていて、私のアプリはCydiaまたはSSH経由でインストールされます。


更新

うん、しかし、そのディレクトリは本当に私のアプリケーションには関係ありません。 たとえば、ドキュメントsettings.xmlを作成していて、別のアプリケーションで同じNSDocumentDirectoryと同じファイル名を使用している場合はどうなりますか? はい、私は知っています。 Cydiaのアプリケーションは/アプリケーションにインストールされていますが、私のアプリケーション用のドキュメントディレクトリもあり、/ var/mobile/Documentsもありません。 http://thebigboss.org/hosting-repository/submit-your-app/compile-for-cydia-submissionを見ると、ディレクトリは/ var/mobile/Library /になるはずですが、前に説明したように、このディレクトリは決して得られません。

+0

あなたは '/ var/mobile/Library'ディレクトリが必要です。 iPhone 3GSにiOS 5.1.1を実行しているものがあります。私はAbsintheで脱獄しました。 – Chris

答えて

0

別のフォルダにインストールされているCydiaアプリを経由しているため、別のディレクトリになっています。

0

一部のCydiaバイナリは、/private/var/lib/(apt-get、opensshなど)にインストールされています。その他は/Applications/(Cydia.app、ゲームなど)にインストールされています。

0

私はまだこの問題に苦しんでいます...私はまだ何が起こっているのかわからないので、私は/ var/mobile/Documentsで働くことを認めました。しかし、自分のデバイスに(sshやモバイル端末経由で)そのディレクトリを手動で作成し、666 [chmod -r 777/var/mobile/Documents]にアクセス権を設定して、そこにファイルを保存してロードする必要がありました。

あなたに会いましょう!

0

あなたがやっていることは、アプリケーションの開始時に、あなたがドキュメントディレクトリに存在するファイルが存在するかどうかをチェックし、そうでない場合は、読み取り専用アプリケーションバンドルからそこにコピーします。あなたがアプリを起動するたびに、それがあります。そして、もし何らかの愚かな理由でAppleがこれを変更したとしても、コードを調整する必要はありません。変化に適応するのに十分な汎用性があるからです。それは元のデータを新しい場所にコピーします(これは最適ではありませんが、静的な場所にいると仮定するよりも優れています。これはユーザー間であらゆる種類の混乱を招くか、または悪化します。

0

バンドルIDを名前として使用します(例:com.companyname.appname.Settings.xml)。彼らはまれに異なるアプリで同じです。また、あなたはあなたのファイルに名前を付け、アプリケーションバンドル内の名前でだが、それはその長所と短所を持っているUUIDを格納するためのUUIDを使用することができます: プロ:ファイルが別のアプリ コンで上書きされることは決してありません:このような操作を行うためにトリッキーになりますもの。

0

アプリケーションによって作成されるすべてのファイルは、アプリケーションサンドボックス(例:/ var/stash/Applications/AppName)に限定されます。ファイルsettings.xmlを検索すると、コード例を使用してfilePath名を取得できます。

サンドボックスの外部にファイルを保存することはお勧めできません。

2

脱獄アプリを実行しているときに定数NSDocumentDirectoryを使用すると、実際には/ var/mobile/Documentsが表示されます。独自の名前が付けられていても、アプリのドキュメントをそこに直接ダンプするのは悪い方針です。

/var/mobile/Library /フォルダの内容を見ると、脱獄アプリを含め、多くのアプリがそこにデータを保存していることがわかります。 NSDocumentDirectoryのような便利な定数があるかどうかはわかりません。しかし、あなたはいつでもあなたのソースをハードコードして、@"/var/mobile/Library/APPNAME"のファイルを探すことができます。このフォルダが変更されることはほとんどありません(もしそうであれば、おそらく他のアプリを破壊するでしょうし、確かに簡単に修正することができます)。

ドキュメントyou link toを見れば、それは指定しない:

AppStoreのアプリは インストール・プロセスで作成されたドキュメントフォルダを持っています。 Jailbrokenアプリはありません。それは に独自のフォルダを作成するアプリまでです。このタイプのフォルダが必要な場合は、 applicationdidFinishLaunching関数の で単純なmkdirコマンドを使用してこれを作成する必要があります。簡単な関数を追加するだけです: mkdir( "/ var/mobile/Library/YOURAPPNAME"、0755);既に のフォルダが存在する場合、害はありません。これは、インストールプロセス がユーザーrootとして実行され、アプリがユーザーモバイルとして実行されるためです。 Cydiaがこれを行うと あなたのフォルダーは不正なアクセス許可を持ちます。

... そのサブディレクトリを自分で作成する必要があります。あなたがしなければそれはそこにはありません。脱獄アプリを書いて、私の経験では

は、単にこれらの少し臭いコーディングプラクティス(パスをハードコーディングし、彼らに自分自身を作成する)の一部を必要とする...それはちょうど私たちが対処しなければならない何かであるかもしれません。

更新:下記のSaurikのコメントを必ず確認してください。

+0

小さな警告が1つあります。/var/mobile/Library /は、あなたのアプリがデフォルトである 'mobile'ユーザとして動作していることを前提としています。いくつかの脱獄アプリはrootとして実行する必要があります。本当にそうなら、おそらく/ var/root/Library/APPNAMEというフォルダを使うべきです。私は、rootで実行し、データを保存する必要のある私のアプリケーションの1つでそれを行いました。脱獄人はそれについて少し不平を言ったが、最終的に私がその場所を使用することに同意した。 – Nate

+2

FWIW、デスクトップのMacアプリの開発者は、この同じ問題に対処するために(Mac App Storeによって強制された新しい「臭い」サンドボックスの内部に)おそらくあるでしょう。また、ドキュメント(ユーザーが操作するもの)をドキュメントに保存し、ライブラリに保存する必要があります(ドキュメントには、ライブラリに "データ"が保存されているアプリはありません)。 –

関連する問題