ミッドランドブログ

長めのお知らせ、紹介記事を掲載します

unityで保存されたPlayerPrefsにFlutterからアクセスする実験


unity製のアプリをFlutterに移し替える検討をしている方に向けた記事です。
ファイルシステム周りの調査をしている方の助けになれば幸いです。

 

前回unityのApplication.persistentDataPathをFlutterで取得する方法について調べました。

midland.hatenadiary.jp

諸事情によりPlayerPrefsに保存されたデータにアクセスする必要あったので、調べてみました。
※元のアプリはUnity2020.3で作成されています

docs.unity3d.com

 

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を利用しました

 

pub.dev

 

pub.dev