2012年05月29日

【Unity】Unity Androidでアプリのパス取得処理のまとめ

AndroidにUnityから出力した時に
ファイルを保存するパスを取得する方法を調べたのでまとめます。

■Application.dataPath

アプリケーションのデータパスを取得する処理ですが、
Androidの場合は本体とSDカードの両方が存在します。

Unityが出力するAndroidマニフェストで本体優先、SDカード優先になっているかで値が変化します。

本体にアプリがインストールされている場合
path = /data/app/<アプリのID>.apk

SDカードにインストールされている場合
path = /mnt/asec/<アプリのID>/pkg.apk

■Application.persistentDataPath
アプリケーションのデータ保存パスを取得できます。
SDカードの場合
download path = /mnt/sdcard/Android/data/<アプリのID>/files/
本体の場合
donwload path = /data/data/<アプリのID>/files/

■Application.temporaryCachePath
アプリケーションのキャッシュ保存パスを取得できます。
SDカードの場合
download path = /mnt/sdcard/Android/data/<アプリのID>/cache/

本体の場合

donwload path = /data/data/<アプリのID>/cache/

iOS版はまた次回

2012/07/31追記

ログを画面に出力するようにしてみました。

いくつものパターンをキャプチャしました。

スクリーンショット 2012-07-31 14.45.01.jpg

Unityの設定は
インストール箇所:SDカード優先
書き込み権限:本体のみ or SDカード許可

表示するテキストの順番は、

@:Application.temporaryCachePath + "/Downloads/";
A:Application.persistentDataPath + "/";
B:Application.dataPath;

1.SDカードを挿入した状態で、書き込み権限を本体のみにした場合

device-2012-07-31-144435.png

2.SDカードを挿入した状態で、書き込み権限をSDカード
device-2012-07-31-142308.png

すべてSDカードを指していますね。

3.SDカードを外した状態でアプリをインストール。書き込み権限を本体のみ
device-2012-07-31-142712.png

アプリのインストール先をSDカードにしていましたが、
SDカードがない状態では本体に自動的に配置されるようですね。

4.SDカードを外した状態でアプリをインストール。書き込み権限をSDカード
device-2012-07-31-142533.png

これはちょっと怖い結果ですね。
書き込み権限をSDカード許可していると
SDカードの有無を問わず、パスとしてSDカードの中を指してくるようです。

SDカードの存在をチェックするプログラムをしておかないと
思わぬ動作をしそうな気がします。


ラベル:unity
posted by ヒイロ at 19:43| 福岡 ☀| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック