Android 標準ブラウザに関する情報の整理

Android 標準ブラウザに関して、レポートが必要になったので調査しました。
いわゆる地球儀ブラウザ。

門外漢なので、間違いなどがあれば修正リクエスト頂けると助かります。
なお、途中で力尽きました。




## 標準ブラウザとは

「ブラウザ」とは、端末ベンダーが自社のAndroid端末の標準ブラウザーとして用意し、プリインストールしているWebブラウザ。__ただし、その実体は端末によって異なる。__
つまり「標準ブラウザは機種によって異なる」ため注意が必要である。

標準ブラウザの例。

- Android ブラウザ ... [Android Open Source Project](https://source.android.com/) ブラウザ、通称「AOSPブラウザ」。Google 謹製であり、OS の一部として提供されている。
- [Chrome for Android](https://play.google.com/store/apps/details?id=com.android.chrome&hl=ja) ... Nexus 5 等の標準ブラウザ。2018/04 現在、[Android OS 4.1（Jelly Bean）以降のスマートフォンやタブレットで利用できる。](https://support.google.com/chrome/answer/95346?co=GENIE.Platform%3DAndroid&hl=ja)
- Sブラウザ（[Samsung Internet Browser](https://play.google.com/store/apps/details?id=com.sec.android.app.sbrowser&hl=ja)） ... Samsung 製端末の標準ブラウザ。


次節以降は、Google 謹製のブラウザをターゲットに記す。


### 参考ソース

* [Android OSと「ブラウザ」、Chrome、アプリ内ブラウザーの関係をまとめる：Tech TIPS - ＠IT](http://www.atmarkit.co.jp/ait/articles/1507/17/news032.html)
* [FFBlog Android 4.2/4.3/4.4の標準ブラウザはChromeなのか？ | 株式会社KSK フレックス・ファーム](http://www.flexfirm.jp/blog/article/402)
* [おや… S Browser 三銃士 の様子が…](https://gist.github.com/uupaa/b25c9cf47bbeedea5a7f)




## Android OS のバージョンとブラウザの関係性

### Android OS 4.3.x以前

- Android OS 4.3（[Jelly Bean](https://developer.android.com/about/versions/jelly-bean.html)）以前を搭載した端末の場合、実体は __「AOSPブラウザ」であることが多い。__
- 端末にプリインストール。Android OS の一部という扱いのため、端末ベンダー提供のパッチ適用によって更新される。
- レンダリングエンジンは [WebKit](https://webkit.org/) である。


### Android OS 4.4

- Android OS 4.4（[KitKat](https://developer.android.com/about/versions/kitkat.html)）以降の端末は、AOSP ブラウザの開発・サポートが終了。__[Chromium WebView](https://developer.android.com/about/versions/kitkat.html#44-webview) をラップしたブラウザが提供されていることが多い。__
- 端末にプリインストール。Android OS の一部という扱いのため、端末ベンダー提供のパッチ適用によって更新される。
- これ以降、レンダリングエンジンは [Blink](http://www.chromium.org/blink) に変更された。


### Android OS 5.x / 6.x

- Android OS 5.0（[Lollipop](https://developer.android.com/about/versions/lollipop.html)）から、[Chromium WebView が OS から切り離され](https://developer.android.com/about/versions/lollipop.html?utm_source=ausdroid.net#WebView)、Google Play から __「[AndroidシステムのWebView](https://play.google.com/store/apps/details?id=com.google.android.webview&hl=ja)」として更新できるようになった。__
- この結果、端末ベンダー提供のパッチ適用に影響されずに更新されることになったが、__この「ブラウザ」と Chrome for Android とは別物であることには注意が必要である。__
- Android OS 6.0（[Marshmallow](https://developer.android.com/about/versions/marshmallow/index.html)）も同じである。
- Android OS 5.0 から、 Chrome for Android がプリインストールされるようになった？（__要出典__）。


### Android OS 7.x / 8.x

- Android OS 7.0（[Nougat](https://developer.android.com/about/versions/nougat/index.html)）から、__[WebView の機能が Chrome for Android に統合](https://developer.android.com/about/versions/nougat/android-7.0.html#webview)された。__
- Chrome for Android がインストールされていれば、「AndroidシステムのWebView」が不要となった。
- Android OS 8.0（[Oreo](https://developer.android.com/about/versions/oreo/index.html)）も同じである。


### 参考ソース

* [Android OSと「ブラウザ」、Chrome、アプリ内ブラウザーの関係をまとめる：Tech TIPS - ＠IT](http://www.atmarkit.co.jp/ait/articles/1507/17/news032.html)
* [第498回：WebKit とは - ケータイ Watch Watch](https://k-tai.watch.impress.co.jp/docs/column/keyword/419591.html)
* [Google Developers Japan: Chromium プロジェクトの新しいレンダリングエンジン Blink のご紹介](https://developers-jp.googleblog.com/2013/04/chromium-blink.html)
* [第693回：WebView とは - ケータイ Watch Watch](https://k-tai.watch.impress.co.jp/docs/column/keyword/685512.html)
* [Android 4.4 Browser が大幅に機能強化しているようです - latest log](http://uupaa.hatenablog.com/entry/2014/04/15/163346)
* [Following public discussion of vulnerabilities in versions of Webkit last wee...](https://plus.google.com/+AdrianLudwig/posts/1md7ruEwBLF)
* [Google、Android 4.3以下のWebView問題について声明を発表 | juggly.cn](http://juggly.cn/archives/139068.html)
* [Android 7.0 NougatではWebViewの機能をChromeが提供 | juggly.cn](http://juggly.cn/archives/195375.html)




## Android ブラウザのバージョン

> 残念ながら、IEやChromeのバージョン名に相当する簡潔なバージョン分類は存在しないというのが、ここまでの結論になります。
>
> <cite>[FFBlog 検証FAQ：「Androidブラウザのバージョン？」 | 株式会社KSK フレックス・ファーム](http://www.flexfirm.jp/blog/article/400)</cite>

未調査。

* [WebView for Android - Google Chrome](https://developer.chrome.com/multidevice/webview/overview)
* [User Agent Strings - Google Chrome](https://developer.chrome.com/multidevice/user-agent)


### Android ブラウザをサポート外にするスクリプト

> WebIntent(ChromeTrigger.js) を使うことで Android Browser で開いたページを Chrome for Android で再オープンすることができます。Android Browser のサポートは不要です
>
> <cite>[第三次ブラウザ戦争がそろそろ閉幕します - latest log](http://uupaa.hatenablog.com/entry/2015/10/04/172957)</cite>
>
> * [uupaa/ChromeTrigger.js: Web Intent implementation. We will say Goodbye Android Browser!](https://github.com/uupaa/ChromeTrigger.js)




## データ

### Android OS バージョンシェア

* [Android Developers](https://developer.android.com/about/dashboards/index.html)


### ブラウザシェア

* [Browser Market Share Japan | StatCounter Global Stats](http://gs.statcounter.com/browser-market-share/all/japan/)

2018/03 現在。

![StatCounter-browser-JP-monthly-201703-201803.png](https://qiita-image-store.s3.amazonaws.com/0/19223/3ae89702-5f31-9e82-06fd-649620822432.png)


### Browser support table

* [Can I use... Support tables for HTML5, CSS3, etc](https://caniuse.com/#compare=chrome+62,android+4.2-4.3,android+4.4,android+62,and_chr+64)

以下の比較。

- Chrome 62 (Desktop)
- Android 4.2-4.3 browser
- Android 4.4 browser
- Android 5-6.x WebView: Chromium 62
- Chrome 64 for Android