見出し画像

PythonでAndroidアプリ作成してみる #11 Android保存先と環境変数

こんにちは、Rcatです。
ずっと解説し忘れていたのですが、設定ファイルどこに保存する?という話です。
PCで使う分には同じフォルダにデータをただ保存するだけでいいんですが、Androidアプリの場合ってどうするんでしょうか?
昔からAndroidのフォルダに関しては直接見ることが多いので、アプリ個別のフォルダがあることは知っており、ではどうすればアクセスできるかということについて考えていこうと思います。

本シリーズはこちら


保存先フォルダと環境変数

では、いきなりネタばらしです。
初回はどこから引っ張ってきた情報だか忘れましたが、"ANDROID_APP_PATH"というのを使っていました。この環境変数でアプリ固有のファイルパスを得ることができていました。
しかしここ"再インストールすると消える"んですよね…。というわけなので、どうもデータを保存するための場所ではなさそうな感じです。
他にいい場所は無いのでしょうか

列挙する

今まで保存していたところも環境変数により取得していたので、環境変数を列挙して、他に良さそうな場所がないか見てみましょう。
コードは以下の通りです。
前々回くらいに紹介したように、アプリ内でプリントを使ってもコンソールに出力が可能なので、そこで確認します。

for k,v in os.environ.items():
	print(f"{k} : {v}")

結果がこちら。関係なさそうなものは省いています。
"ANDROID_PRIVATE"辺りは使えそうですね?

TMPDIR : /data/user/0/rcat999.jp.jp.rcat999.rcatbk/cache
ANDROID_ENTRYPOINT : main.pyc
ANDROID_ARGUMENT : /data/user/0/rcat999.jp.jp.rcat999.rcatbk/files/app
ANDROID_APP_PATH : /data/user/0/rcat999.jp.jp.rcat999.rcatbk/files/app
ANDROID_PRIVATE : /data/user/0/rcat999.jp.jp.rcat999.rcatbk/files
ANDROID_UNPACK : /data/user/0/rcat999.jp.jp.rcat999.rcatbk/files/app
PYTHONHOME : /data/user/0/rcat999.jp.jp.rcat999.rcatbk/files/app
PYTHONPATH : /data/user/0/rcat999.jp.jp.rcat999.rcatbk/files/app:/data/user/0/rcat999.jp.jp.rcat999.rcatbk/files/app/lib

フォルダを使用する

プラットフォームの判別とフォルダーの取得に関しては下記のように行います。

from kivy.utils import platform 
if platform == "android":
	self.ConfigDIR = os.environ['ANDROID_PRIVATE']

というわけで、この状態でアプリを再インストールしてみましょう。
はい、再インストールしても設定データが保持されています。このフォルダを使うのがベストなようですね。

まとめ

今回はAndroidアプリでの設定の保存方法について考えていきました。
AIに聞いてみると、Androidには別に設定を保存するためのものがあるみたいですが、今回はパソコンも兼用なのでJSONファイルをそのまま扱うという方法を取りました。
ひとまず、これにて再インストール時の設定消失を免れることができました。
詳しい設定クラスについては、配布しているソースコードをご確認ください。
それではまたお会いしましょう。


情報が役に立ったと思えば、僅かでも投げ銭していただけるとありがたいです。