AI/DIGITAL / 2026.08.26
26/08/26 Androidでゲームのセーブデータをスマホ⇄タブレットで同期したかっただけなのに、想像以上に大変だった

Androidスマホで『トガビトノセンリツ』を遊んでいて、ふと「このセーブデータをタブレットにも移せないかな?」と思いました
スマホで進めた続きをタブレットの大きな画面で遊び、また外ではスマホへ戻す
「じゃあ、そのフォルダをタブレットにコピーすれば終わりでは?」ぐらいに考えていました
ところが実際に始めてみると、保存場所が見えない、バックアップは成功したように見えるのに戻せない、PCへ書き出せたと思ったら中身は0 bytes…
気づけば、ゲームをする時間よりAndroidの仕組みを調べている時間の方が長くなっていました
コピーするだけだと思っていた
まず困ったのが、セーブデータの場所です
Android 15ではアプリごとのデータが隔離されていて、普通のファイル管理アプリから簡単に触れる場所にはありません
これは不便に見えるけど、他のアプリや第三者が勝手にデータを読むのを防ぐための仕組み
Android公式でも、アプリはそれぞれ別の領域で動くApplication Sandboxとして説明されています
理屈は分かる。でも、こちらの気持ちは「セーブデータどこにあるん?」です
端末間転送ではSuccessになった
そこでPCからAndroidの開発者向け機能を使い、アプリがバックアップ対象になっているかを確認しました
クラウド向けの処理ではうまくいかなかった一方、端末から端末へ移すD2DではSuccessになった
「これはいけるのでは?」
ただし、AndroidのD2D転送は、新しい端末を用意した時に元の端末からデータを移すための仕組みらしく
自分がやりたかった、スマホとタブレットの間で毎回セーブを往復させる同期とは少し違いました
タブレット側に「データをコピー」が出ない
D2Dで移せそうなら、タブレット側で転送画面を開けばいい
そう思ったのに、今度はその入口が見つかりません
端末の初期設定中なら出てくるはずのデータ移行が、セットアップ後の画面にはない
設定の中にそれらしい項目もなく、追加ユーザーを作っても状況は変わりませんでした
Androidは同じOSでも、メーカーやバージョンによって復元画面の流れが変わります
公式の復元フローの説明を見ても、初期設定や端末移行の中で使うことが前提になっていました
機能はありそうなのに、直接は開けない
ここから完全に沼でした
端末内の転送機能や、それを動かす条件まで調べてみると、仕組み自体は入っているように見える
でも外部から直接開こうとすると権限で止まり、設定を変えようとしてもセキュリティ上の制限に弾かれます
ここは具体的な内部名や呼び出し方を書くと、ゲームのセーブ移行という話から離れてしまうので省きます
少なくとも自分の環境では、隠れている画面を無理に呼び出して解決、とはなりませんでした
PCへ書き出せたと思ったら0 bytes
次に試したのが、Android Studioのバックアップ・復元テストです
画面上ではバックアップ用のファイルが作られ、今度こそ中身を取り出せたように見えました
でも確認すると、肝心のアプリデータは0 bytes
市販アプリは開発用のデバッグ版ではないため、テスト用の方法では対象外になっていました
Android 12以降では、対象アプリがデバッグ可能でない限り、従来のPC向けバックアップにアプリデータが含まれない制限があります
Android公式の変更点と、Android Studioでの復元テスト条件を見て、ようやく0 bytesの理由がつながりました
アプリを開発用の状態へ作り替える案も考えましたが、それをすると署名が変わります
元のアプリへそのまま上書きできず、すでにあるセーブデータを取り出す解決策にはなりませんでした
途中で、そもそもの目的が違うと気づいた
ここまで調べて、ようやく大事なことに気づきました
Androidが用意しているのは、基本的に機種変更時の一度きりの移行です
自分が欲しかったのは、スマホで遊んだらタブレットへ、タブレットで進めたらスマホへ戻す日常的な双方向同期
似ているようで、やりたいことが最初から別物でした
端末の管理権限を大きく変えれば、アプリの領域へ触れられる可能性はあります
ただ、そこまで行くにはブートローダーのロック解除などが関わり、Android公式でも解除時にユーザーデータを消去する仕組みが示されています
セーブを守りたくて始めたのに、そのセーブごと消える可能性がある
さすがに今回は、ここで止めました
結局、自分の非root環境では『トガビトノセンリツ』のセーブをスマホとタブレットで継続的に同期するところまでは行けませんでした
新しい端末の初期設定時にD2D転送を使えば移行できる可能性はあるけど、セットアップ後に何度も行き来させる用途ではなさそうです
自分の端末にある自分のセーブなのに、自分では簡単にコピーできないのが不思議
でも、アプリのデータを誰でも簡単に触れないのは、セキュリティとしては正しいんですよね
最初は「セーブデータどこにあるん?」だったのに、最後はAndroidのバックアップ、端末間転送、アプリの署名、デバッグ制限まで調べていました
マジで、たかがセーブデータを移動するだけやで…(´・ω・`)