Android 15 の新機能「アプリをアーカイブ」の意外な落とし穴? アーカイブしたら復元不可能に

Android 15 からの新機能として、アプリをアーカイブする機能が追加された。これにより、アプリのデータなどを保持したままアプリを削除することで、一時的に空き容量を減らすことができるというものである。iOS だと iOS 11 で実装された「アプリを取り除く」に相当する機能だ。
まあ、実際にこの機能が便利かどうかは置いておいて、この機能であるトラブルが発生してしまったので、メモとして残しておく。
アーカイブしたあと戻せなくなる不具合が発生!
僕は間違えて LINE アプリをアーカイブしてしまった。Android 14 のとき「(アプリを) 開く」ボタンがあった場所が「アーカイブ」ボタンに変化したので間違えやすい……。

慌てて「復元」ボタンを押すが、どうも上手く復元できない。なんどやり直しても、デバイスを再起動しても改善しなかった。
原因はアプリのバージョン違い。素人には復旧が難しい?
結論からいうと、この不具合は、Play ストアからインストールできるバージョンよりも、アーカイブする前のアプリバージョンが新しいことに起因する不具合だった。
そんなことが起こりうるのか? と思うが、これはアプリデベロッパーの運用の仕方によっては十二分に起こりうる。なぜなら、Play ストアでリリースしたアプリのバージョンをロールバックすることができるからだ。
例えば、アプリ開発者がバージョン 1 を改善したバージョン 2 をリリースしたとする。当然、ユーザーはバージョン 2 に更新する。この後、バージョン 2 に重大な不具合が見つかったとして、アプリ開発者がバージョン 2 のリリースを取り消す。新規にアプリをインストールする人はバージョン 2 ではなくバージョン 1 をダウンロードできるようになる。既にバージョン 2 をインストールしている人は、そのままバージョン 2 を使い続ける必要がある。
バージョン 2 をインストールしている状態で、アーカイブを実行して復元し直すと、バージョン 1 しかダウンロードできず、既にバージョン 2 のインストール情報が残っている Android は、アプリのインストールに失敗する (古いバージョンにダウングレードすることはできないので)。

今回の LINE では、これと同様のことが発生したようだ。具体的には、デバイスにインストールしていたバージョンは 15.1.1 (150110669
) だったのに対して、Play ストアでインストールできる最新バージョンは 15.0.0 (150000454
) だった。
これを復旧するには、アーカイブ状態のアプリを完全にアンインストールするか、バージョンが一緒、もしくは新しいバージョンのアプリをインストールする必要がある。僕は同じバージョンのアプリを入手して、インストールすることで復旧できた。
前者の場合、アプリによっては消失してしまうデータがあるかもしれない。後者は、インストールが弾かれないアプリパッケージをどうにかして入手する必要がある。ちょっと Android に詳しければ後者の手段を取ることは難しくないものの、そうではない人には難しいし、前者もデータとおさらばする必要があるので厳しい。
どうすれば良かったのか?
この不具合は、様々な要因が重なって発生している。これらのどれかをやっておけば、回避できたはずだ。
- そもそも、リリースを取り消して切り戻しをしない。ホットフィックスをリリースする。
- アーカイブを復元するときに、取り消したリリースでも特別に復元できるようにする。
- アーカイブするときのバージョンよりも Play ストアのバージョンが古ければ、アーカイブできないようにする。
まあ、どうにかしてこのような不具合が起きないようになると良いね。
余談ではあるが、僕のデバイスはルート化されていたので、Let Me Downgrade などを使用して強制的に古いバージョンをインストールすることも可能なのだが、なぜかそれも不可能だった。