unity製のアプリをFlutterに移し替える検討をしている方に向けた記事です。
ファイルシステム周りの調査をしている方の助けになれば幸いです。
前回unityのApplication.persistentDataPathをFlutterで取得する方法について調べました。
諸事情によりPlayerPrefsに保存されたデータにアクセスする必要あったので、調べてみました。
※元のアプリはUnity2020.3で作成されています
Android端末に保存されたPlayerPrefsの取得方法
保存場所
- Android: /data/data/[パッケージ名]/shared_prefs/pkg-name.v2.playerprefs.xml
final file = File('/data/data/[パッケージ名]/shared_prefs/[パッケージ名].v2.playerprefs.xml');
String data = await file.readAsString();
データの保存先がアプリ毎に固定です
iOS端末に保存されたPlayerPrefsの取得方法
保存場所
- iOS: Uses the [NSUserDefaults standardUserDefaults] API to store PlayerPrefs data.
//まずLibraryパスを取得します(path_providerを利用)
final appDocumentsDirectory = await getLibraryDirectory();
String libraryDirectory = appDocumentsDirectory.path;
//plist_parserを利用してファイル読み込み resultはMapです
var result = PlistParser().parseFileSync(libraryDirectory + '/Preferences/[パッケージ名].plist');
print(result);
必要なインポートは二つ
import 'package:path_provider/path_provider.dart';
import 'package:plist_parser/plist_parser.dart';
plistをテキストとして読み込むことができなかったので、plistparserを利用しました