Androidアプリのアップデートトラブルを回避するには

最近バージョンアップにより改悪されてしまうAndroidアプリが多いな、と感じています。
例えばSkypeとかGoogle Mapsとか。
そしてGoogle Playのユーザーレビューには「〜ができなくなった。最悪!!」とか「前の方がよかったので旧バージョンに戻したい」といったバッドレビューがズラリと並ぶ、といったことに。
実は私も以前それでハマリかけたことがあるのですが、そういったことはちょっとした運用のコツと日頃の心がけで回避できます。
というわけでそれについて書いてみることにします。


まず前提として必ずやっておくことから。
Google Playの自動アプリアップデートは必ずOFFにする!!
自動アップデートがONになっていると当然新バージョンがリリースされると自動的にアップデートされてしまいます。
それを防ぐためにGoogle Playの設定で自動アップデートをOFFにします。

左が現行バージョンであるVer.4.1.6、右がVer.3系の最終バージョンである3.10.14のGoogle Playの設定画面(後者が白黒反転しているのはInverted Multi DPI Play Storeをインストールしているから)。
このように設定し、アプリの自動アップデートをOFFにします。
そしてVer.3系のGoogle Playでは各アプリの詳細画面にある「自動更新を許可する」のチェックマークもOFFにしておきます。
・提供元不明のアプリ(Unknown sources)のインストールを許可する。
もしアプリをアップデートして「改悪された!!」と思ってもAPKのバックアップを取っていればそれをインストールして旧バージョンに戻せますが、その際これが許可されていないとインストールに失敗します。
ですから設定→セキュリティー内の「提供元不明のアプリ(Unknown sources)」のチェックをONにして、バックアップしたAPKファイルをインストールできるようにしておきます。


では本題に入ります。
バージョンアップされたアプリがあるという通知が出たり、Google Playを開いた際にバージョンアップされたアプリを見つけても、すぐに更新ボタンを押してはいけません。
その前に次のことをチェックします。
・アプリの詳細画面を開いて、アプリの説明をチェック。
そこで大幅な仕様変更や新機能の搭載について書かれている場合は要注意。
それらが地雷になっている可能性がありますから、アップデートはしない方がいいでしょう。
・新バージョンのバージョンナンバーをチェック。
バージョンナンバーの整数部分の数字が上がる(Ver.1.x.xから2.0.0へ、といった)メジャーアップデートの場合は要注意。
これまた地雷の可能性がありますから、この場合もアップデートは一旦保留です。
・ユーザーレビューをチェック。
ユーザーレビューの表示形式を切り替えて「日付の新しい順」にし、アプリ更新後に書かれたユーザーレビューをチェックします。
そこでバッドレビューが並んでいる場合は当然ですがアップデートは止めておきましょう。

相変わらずSkypeのユーザーレビューはバッドレビューの嵐だな…
・要求するパーミッションが追加されていないか確認。
新しく搭載した機能の実装に必要なため(または更なるユーザー情報の吸い取りのため)、新たにパーミッションが追加されていることがあります。
これも地雷化の要素なので、チェックしておきましょう。

Ver.3系のGoogle Playの場合はパーミッションの変更があるアプリは「手動アップデート」の項目にリストされるため分かりやすいのですが、Ver.4.xではこのように更新ボタンを押した先にしかパーミッションの変更についての情報がないため分かりにくいのが難。
こういったことをチェックして、問題がないことを確認してからアプリをアップデートするよう習慣づけましょう。


もし「アップデートするとハマリそう」なアプリの場合は旧バージョンのAPKをバックアップしておきましょう。
アップデートするつもりがなくても誤ってアップデートしてしまうことはありますし、何か怪しいけど、アップデートしてみよう、と思って実際にやってみたらやっぱりダメだった、という際にAPKのバックアップがあればそれを使ってバージョンダウンできますから、是非やっておきましょう。
APKをバックアップする方法はいくつかあり、詳細は割愛しますが、ここでは定番ファイルマネージャであるES File Explorerを使う方法を簡単に説明します。
ES File Explorerを起動し、アプリケーションマネージャを開きます。
するとインストールされたアプリのリストが開くので、バックアップしたいアプリ名を長押しして出てくるメニューから「バックアップ」を選択。
これでアプリのバックアップが完了し、APKファイルが保存されます。
APKファイルの保存先は設定画面で確認、変更できます(外部ストレージに保存するようにしておいた方がいいでしょう)。
一部バックアップできないアプリ(/data/app-privateディレクトリにインストールされたアプリ。有料アプリに多い)もあるので要注意(こういったアプリをバックアップするには要root)。
そしてバックアップしたAPKファイルはPCなどにコピーし、バックアップしておきましょう。
これさえあればアプリのバージョンダウンも、他の端末への旧バージョンのインストールも自由自在です(有料アプリだと問題あるかも:私は試していないので未確認)。

このように「旧バージョンのAPKファイルをググって探し、それを使ってバージョンダウンしろ」といったことをユーザーレビューに書く人がいますが、絶対に止めておきましょう。
それで見つかるAPKファイルにはマルウェアが仕込まれている可能性がありますから危険です。
バージョンダウンするために使うAPKファイルは自分の端末から取得したものを使いましょう。
そのためにバックアップが重要なのです。
事前に釘を刺しておきますがコメントやTwitterで「(アプリ名)のAPKくれ」といったことを書いても一切無視します(コメントも削除します)。


しかし上に挙げたような運用をしようとすると、手持ちのAndroid端末が一台だけの場合はかなり気を使う必要があるのが難点。
インストールしているアプリ全てに対してアップデートが提供される度に旧バージョンをバックアップしておく、とすればベストですが、実際にやるとなるとかなりの手間がかかりますし、ストレージ容量も消費します(心配性な人はそれでもやっておいた方がいいかも)。
それ故ある程度の目利きが必要なのです。
ですがAndroid端末が二台以上あれば少々楽ができます。
メインで使っている端末でアップデートを試し、実際に使ってみて改悪されていればサブ端末を使ってAPKをバックアップし、それを使ってバージョンダウン、または逆にサブ端末でアップデートを試し、問題なければメイン端末もアップデート、という手が使えるからです。
私も以前ハマった後それに懲りて、前者の方法を取っています。
まずはメイン端末(現在であればGalaxy Note GT-N7000)でアプリをバージョンアップし、実際に使ってみて問題があれば別の端末(Xperia acro HDが多い)でAPKをバックアップし、それを使ってGalaxy Noteにインストールされた新バージョンをバージョンダウンする、そして特定の端末一台にしかインストールできないアプリ(Xperia acro HDにしかインストールできない産経新聞アプリ。他の端末では有料になってしまう)はバージョンアップされる度に旧バージョンをバックアップ、という運用を行なっています。


というかアプリをアップデートした後問題が出た場合に以前の状態に戻すことができるロールバック機能をOS標準で搭載して欲しいところ。
そう言えばこれについては2年以上前にも書いていますね。


アプリアップデートでハマる


上に書いたハマリ状態は実はこの時のことではなく、その後更に大きな問題でハマった時のことを指しています。
当時のメイン端末であるGalaxy S II GT-I9100でウェザーニュースタッチを新バージョンにアップデートし起動したらユーザー登録を促され、「改悪!!」と思ったものの他にこのアプリをインストールした端末がないのでバージョンダウンできない!! と思ったら運良くGalaxy Tabにもインストールしていた(しかもその時3HKプリペイドSIMを挿していたので、自動アップデートされずに残っていた)ことに気づきすぐにAPKファイルをバックアップしてバージョンダウンした、というトラブル。
そのウェザーニュースタッチは未だに改悪されたままで、相変わらずバッドレビューの嵐。
そういったこともあり、一度改悪されたアプリはその後のバージョンアップでも改善されることはあまりないのが現状。
それ故旧バージョンをずっと維持し続けているアプリが多数(当然それらのアプリのAPKファイルもちゃんと確保してあります)。
改悪アプリの開発者はそういったバッドレビューにちゃんと目を向けて、きちんと「改善」になるアップデートを提供して欲しいところですが、現実にはそうなっていないんですよね…


そういえばGoogle Play自体も改悪され、使いにくくなってしまいましたが(特にPCブラウザ版。Twitterでも何度かつぶやいてますね)、これについても改めてエントリするかも知れません(そういって実際にそうすることはあまりないので、あまり期待しないこと)。