Androidタブレット(5.0.2を実行)のアプリストアから最新バージョンのAndroidシステムWebViewをダウンロードしてインストールしました。
ただし、アプリは引き続き古いwebviewバージョン(39.0.0.0)を使用します。
どうすればそれらを切り替えることができますか?
情報については、古いものを無効にしてみましたが、webviewを使用するアプリを開くと再び有効になります。
Androidタブレット(5.0.2を実行)のアプリストアから最新バージョンのAndroidシステムWebViewをダウンロードしてインストールしました。
ただし、アプリは引き続き古いwebviewバージョン(39.0.0.0)を使用します。
どうすればそれらを切り替えることができますか?
情報については、古いものを無効にしてみましたが、webviewを使用するアプリを開くと再び有効になります。
回答:
ルートなしではこれを変更できません。
システムフレームワークは、WebViewコンポーネントを要求するアプリケーションに特定のパッケージを使用するようにハードコーディングされています。デフォルトでは(AOSPで)、値com.android.webview
AOSPビルドプロセス中にコンパイルされるバージョンを使用します。このコンポーネントを変更するメーカーのデバイスでは、パッケージ名が異なる場合があります。とにかく、デバイスに同梱されているWebViewを置き換えるには、この値をに変更する必要がありますcom.google.android.webview
。
これを行う「手作業」の方法は、デバイスからframework-res.apkファイルを取り出し、逆コンパイルし、config_webViewPackageName
リソース変数の値を変更することです。/res/values/strings.xml
.apk内に配置する必要があります。これを行ったら、すべてを再パッケージ化し、新しい.apkをデバイスにプッシュして、古いものを置き換える必要があります。
別の方法として、Xposed フレームワークをインストールしてから、WebViewGoogleモジュールを使用する方法があります。カスタムROMを使用する場合、必要なフレームワークコンポーネントを永続的に変更するパッケージを見つけることもできます(または、デフォルトでGoogleのWebViewを使用するようにビルドされる場合があります)。
私の仮説は、システムが何らかの形で存在するWebView実装に依存しているため、この制限が部分的に存在し、ユーザーがそれを変更できる場合、奇妙な方法でシステムを破壊する可能性があるというものです。また、悪意のあるユーザーがユーザーに気付かれずに悪意のあるユーザーを提供しようとするなど、アプリがシステムWebViewをオーバーライドできるようにすることには、セキュリティ上の影響もあります。
さらなる説明のポイントとして:システムWebViewがPlayストアで最初に利用できる理由は、Nexusデバイス(および場合によっては他のデバイス)がプレインストールされ、それを使用するように構成されているためです。つまり、これらのデバイスのシステムWebViewです。したがって、GoogleはPlay Storeを介してこれらのデバイスのWebView更新を提供できるため、ブラウザ/ WebViewを更新するだけで完全なシステムOTAは必要ありません。Googleが同様の方法でPlayストアの更新に移行した他のコンポーネントがありますが、本質的にはより高速であるという理由があります。電話と連絡先は最近の2 つで、リンクされた記事には、Googleがこのアプローチを採用した理由に関する追加の詳細が記載されています。