やじうまPC Watch

最近Android向け動画プレーヤー「VLC」の更新がない?その理由

Android向けVLCのページ。最終更新は2023年8月27日だ

 Android用のビデオ再生ソフト「VLC」が、ここ数カ月更新が行なわれていないのだが、開発をサボっているわけではなく、Googleが更新を拒否したためだという。その理由について、VideoLANの開発者ニコラ・ポメピュイ氏が3月26日にブログを投稿した。

 周知の通り、AndroidアプリはAPKファイルで提供されており、アプリのすべてのコード、ソースやその他のデータが含まれている。そしてこのAPKファイルの信頼性を検証するために署名する必要があるのだが、開発者は秘密キーを生成してAPKに対して署名し、公開キーで検証する仕組みとなっている。

 Androidでは、アプリの更新時に、更新を許可する前の古い署名と新しい署名の一致を確認し、そうでない場合はエラーでインストールさせないようになっている。このためアプリの開発者は署名を行なった証明書の紛失を避け、なおかつ証明書を漏洩から保護しなければならない。

通常のAPKのリリースまでのワークフロー

 一方、Googleでは数年前よりAndroidアプリをパッケージ化する新しい手法を「App Bundle」を導入しており、異なるアーキテクチャや異なるAndroidバージョン向けのAPKをPlayストア側が生成できるようになった。これによってユーザーのインストールスペースの削減を図っている。

 このApp Bundleのワークフローにおいては、開発者は「アップロード鍵」を使用することで、Playストアがアップロードをした者が正当であることを検証し、Playストアが「リリース鍵」を用いて開発者に代わってアプリに署名する仕組みを採用している。この場合、Playストア側が開発者の秘密鍵とパスワードを保持する必要がある。

App Bundleのワークフロー。Playストアが開発者に代わってAPKに署名するが、Playストアが秘密鍵とパスワードを保持する必要がある

 ただ、GoogleもPlayストア側で秘密鍵とパスワードを保管しなければならないというのはよくない慣習であると認識しているため、Android 11以降では、ローテーションの証明が含まれている限り、異なる署名でアプリを更新できる「デュアルリリース」というワークフローを導入した。

デュアルリリースのワークフロー。Playストア側が秘密鍵を保持しなくても良いが、Android 11以降のみサポートする

 もっとも、App Bundleについては発表時2021年8月以降の新アプリについては必須とされていたため、古いアプリでかつ古いワークフローを使っていたVLCには影響はなかった。

 ところがGoogleはその後、Android TVサポートを含もうとしているすべてのアプリに対してApp Bundleの使用を必須化させた。

 VLCは1つのアプリでAndroid TVもサポートしており、Android TV以外のユーザーでもTV向けユーザーインターフェイスに切り替えて利用可能にしている。この機能のおかげで、ユーザーはAndroid TVに準拠していないデバイスでも、リモコンやDPADを使った操作が可能だった。つまりVLCはAndroid TVのサポートを謳う限り、App Bundleを使わざる得なくなった。

 この時点でVideoLANにとっての選択肢は3つしかなくなった。

  1. 秘密鍵をPlayストアに送信する
  2. Playストアに送信するAPKからTVのサポートを削除する
  3. App Bundleを使う

 まず1.についてだが、VideoLANはセキュリティの基本的なルールとして採択しない。「秘密鍵は秘密のままにしておく必要がある」と語る。APKはPlayストア以外にも、VideoLANのWebサイト、Amazon AppStore、Huawei AppGaleryを通じて提供しているため、秘密鍵をGoogleに提供するとリリースワークフロー全体が危険にさらされるとしている。

 2.を採用すればGoogleに秘密鍵を送信しなくて済み、Android 11以降であればデュアルリリースによる署名委任が実現できるが、Android 11以降ではTVがサポートされなくなってしまう。

 そして3.のApp Bundleを使う手法については、ユーザーが30%しかいないAndroid 11しかサポートできず、メリットは皆無だとしている。

 つまり、「Android 10以下、かつTVサポートを提供する解決策がないため、VLCは更新できなかった」としており、「行き止まりだ」としている。