Android 6.0でChromium WebViewがソースビルドされなくなったので、自前でChromiumをビルドをする 



## あれ、`external/chromium_org` どこいった？

Android 6.0のソースが[検索サービス](https://sites.google.com/site/devcollaboration/codesearch)に現れた。
さて、ブラウザやWebViewがどうなったか見てみるか、と思った次の瞬間・・・

**なに？？？**

> https://android.googlesource.com/platform/external/chromium-webview/+/2773fff0a2927264eb37d9e532315aea0ba0ff20/README
>
> Building the Chromium-based WebView in AOSP is no longer supported. WebView can
now be built entirely from the Chromium source code.


【意訳】
もうAOSPではChromiumをソースバンドルしないよん〜
改造するならじぶんで勝手にやってね〜♪

　
　
まじかーーーーー！！！！！！！！


## とりあえずソースを落としてみる

とはいえ、親切に[README](https://android.googlesource.com/platform/external/chromium-webview/+/2773fff0a2927264eb37d9e532315aea0ba0ff20/README)に、いろいろ書いてるので… （とはいっても、Chromiumプロジェクト内でドキュメントによって言ってることが違っていたりするので、[このへん](https://www.chromium.org/developers/how-tos/get-the-code)を参考にしつつ)

```bash:Chromiumソースコードを取得
mkdir ~/Chromium
cd ~/Chromium
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
./depot_tools/fetch --nohooks android
```

で、

```bash:ビルド
PATH=`pwd`/depot_tools:$PATH gclient runhooks
```

実行した。

すると、エラーがでました

```
Updating projects from gyp files...
Error while checking Android SDK extras versions. Could not find the "extra-google-google_play_services" package in /home/yi01/Chromium/src/third_party/android_tools/sdk//extras/google/google_play_services. Please run build/install-android-sdks.sh to download it.
gyp: Call to 'python             ../../build/check_sdk_extras_version.py             --package-id extra-google-google_play_services             --package-location /home/yi01/Chromium/src/third_party/android_tools/sdk//extras/google/google_play_services' returned exit status 1 while in /home/yi01/Chromium/src/third_party/android_tools/android_tools.gyp.
Error: Command '/usr/bin/python src/build/gyp_chromium' returned non-zero exit status 1 in /home/yi01/Chromium
Hook '/usr/bin/python src/build/gyp_chromium' took 20.86 secs
```

ということで、

```
pushd src
./build/install-android-sdks.sh
./build/install-build-deps-android.sh #ついでに
popd

PATH=`pwd`/depot_tools:$PATH gclient runhooks
```

と再度ためしたら、通りました。ここまでが前準備。

## ビルド

[README](https://android.googlesource.com/platform/external/chromium-webview/+/2773fff0a2927264eb37d9e532315aea0ba0ff20/README)に書いてあるのを参考に

```
cd src

build/gyp_chromium -DOS=android -Dtarget_arch=arm -Drelease_unwind_tables=0 -Dbuildtype=Official -Dchrome_build_id='2e7c7a0f-c733-4b9a-9c8e-d3cf0938369b'
PATH=`pwd`/../depot_tools:$PATH ninja -C out/Release system_webview_apk
```

を実行。

`out/Release/SystemWebView.apk` というAPKが出来上がります。


```
$ adb root
$ adb remount
$ adb shell rm -r /system/app/webview/*
$ adb shell mkdir -p /system/app/webview/lib/arm/
$ adb push SystemWebView.apk /system/app/webview/
$ 7z x SystemWebView.apk lib/armeabi-v7a/libwebviewchromium.so
$ adb push lib/armeabi-v7a/libwebviewchromium.so /system/app/webview/lib/arm/
$ adb reboot
```

で、ブラウザを起動すると・・・

![Screenshot_20151021-225748.png](https://qiita-image-store.s3.amazonaws.com/0/74571/88585d34-4bf9-c120-a25e-c7fa1ad266f9.png "Screenshot_20151021-225748.png")

何の変哲もないブラウザですね。
＃いちおうAndroid 6.0のFloating ActionModeアピールｗ
　
　　
　　
## 気になる点

### version_codeが未指定


```
10-21 19:11:56.375   807   881 W PackageManager: Downgrade detected: Update version code 1 is older than current 246011900
```

ってかんじで「おぉ？」となることがあります。

APKをバラして見てみると、

```
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.webview" platformBuildVersionCode="23" platformBuildVersionName="6.0-2166767">
```

version_codeの定義がありませんね…

`android_webview/apk/java/AndroidManifest.xml` あたりが使われているんじゃないかなーと予想。（未検証）

　　
## おまけ

### Android SDKについて

24.0.1やりました。

```
wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
tar xzvf android-sdk_r24.4.1-linux.tgz

export ANDROID_HOME=$HOME/android-sdk-linux
export PATH=$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:$PATH
```


### ビルド環境について

AOSPのときはDebianでもビルドできてたのに、Chromiumプロジェクトのやつをビルドしようとすると、
**Ubuntu 12.04/14.04/14.10/15.04 じゃないとビルドができない** という最大の罠があります。
（私はDebian大好き人間なので、このためだけにUbuntuの環境を用意するはめになったｗ）


なんとなく[このへん](https://wiki.cyanogenmod.org/w/Build_for_hammerhead#Install_the_Build_Packages)をみて、apt-getで以下のパッケージは入れました。

```
sudo apt-get install bison build-essential curl flex git gnupg gperf libesd0-dev liblz4-tool libncurses5-dev libsdl1.2-dev libwxgtk2.8-dev libxml2 libxml2-utils lzop openjdk-7-jdk openjdk-7-jre pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev

sudo apt-get install g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev
```