Ubuntu14.04でGenymotionを使ってアズールレーンを動かす方法


皆さん、アズールレーンはやってますか?
なんか世間で急速に流行ってるようですね。

ということで、UbuntuでもアンドロイドエミュレータのGenymotionが動くそうなので、これを使ってアズールレーンが簡単に動くのでは?と思ったのですが、最新版のGenymotionはubuntu16.04しか対応していなくて、ちょっとハマるポイントがあったので、これをなんとかして動かす方法を書いてみます。

なお、こんな感じで動きます。

Genymotionのインストール

まずGenymotionはVirtualboxが必須なので、これは普通にapt-get installします。

$ sudo apt-get install virtualbox

次にGenymotionのページ(https://www.genymotion.com/) に行って、ユーザ登録をしてから[Resource]-[Fun Zone]より、パーソナル版をダウンロードします。

そして、

$ chmod +x genymotion-2.10.0-linux_x64.bin
$ ./genymotion-2.10.0-linux_x64.bin

でインストールします。.binの有る所にそのままインストールしようとするので、genymotion-2.10.0-linux_x64.binを実行する際は適切な場所にコピーさせてから実行しましょう。

無事に終ったら、そのまま

$ cd genymotion
$ ./genymotion

で、エミュレータ端末の設定「だけ」はできます。
しかし、Ubuntu 14.04ではここから肝心のエミュレータの起動をしようとすると…

/home/xxx/genymotion/player: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /home/xxx/genymotion/player)
/home/xxx/genymotion/player: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /home/xxx/genymotion/libprotobuf.so.9)
/home/xxx/genymotion/player: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /home/xxx/genymotion/libOpenglRender.so.1)
/home/xxx/genymotion/player: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /home/xxx/genymotion/player)
/home/xxx/genymotion/player: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /home/xxx/genymotion/libprotobuf.so.9)
/home/xxx/genymotion/player: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /home/xxx/genymotion/libOpenglRender.so.1)

のようなことを言われてしまって起動できないので、ちょっとした工夫が必要になります。

gcc 5.3をビルドして、出来たlibcライブラリを使わせる

上記のエラーはubuntu14.04に入っているlibcやlibc++のバージョンが古い為出てきます。
このエラーはままあることで、これを誤魔化す方法は多々あるのですが、一番影響が少なそうな方法として、gccを自分でビルドしてその過程で出来たlibcライブラリを使う方法があります。
幸いにしてgccはインストール先も自由にできますし、一般的なLinuxの実行ファイルですと、LD_LIBRARY_PATHを環境変数に設定することで、そのライブラリから優先的に読んでくれるので、これを利用すれば安全です。

ということでサクサクっとやっていきます。
あ、ビルドする前にgccが無いと卵が先かになるので、build-essentialは入れておきましょう。

sudo apt-get install build-essential

この例ではインストール先を /home/xxx/rfs/usr/local 以下とします。

まずは、gccのソース一式をここからダウンロードします
http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.3.0/

ソースをダウンロードしたらこういう感じで/home/xxx/rfsなんかを適当に作って、、、

$ cd /home/xxx/rfs
$ mkdir -p usr/bin
$ mkdir -p usr/lib
$ mkdir -p usr/src
$ mkdir -p usr/local/bin
$ mkdir -p usr/local/lib
$ cp /home/xxx/gcc-5.3.0.tar.bz2 /home/xxx/rfs/usr/src
$ cd usr/src 
$ tar jxvf gcc-5.3.0.tar.bz2

その後サクッとgccをいつもの方法でmake生成そしてビルドしてインストール。
../configureに指定するprefixでインストール先を決められるので適時変更してください。

$ cd gcc-5.3.0
$ ./contrib/download_prerequisites
$ mkdir build
$ cd build
$ ../configure --enable-languages=c,c++ --prefix=/home/xxx/rfs/usr/local --disable-bootstrap --disable-multilib
$ make
$ make install

無事にインストールできましたでしょうか。
この方法だと無闇にsudoを使わなくて済むので、不味いなあと思ったら環境に影響を与えること無くすぐに消せるので良いですね。
無事にエラーも出ずに終ったらやっとこさGenymotionエミュレータの起動です。

$ cd ~/genymotion
$ export LD_LIBARAY_PATH=/home/xxx/rfs/usr/local/lib:/home/xxx/rfs/usr/local/lib64:$LD_LIBRARY_PATH
$ ./genymotion

この「LD_LIBARAY_PATH」がミソです。これを指定してやることによって、genymotionは先ほどビルドした新しいライブラリを優先的に使用してくれます。

無事にplayerが起動出来ましたでしょうか?
あとはAndroidの中の「設定」で言語を日本語に変えてあげて、エミュレータ右端上にあるGAPPSのアイコンを押して、GooglePlayが使える状態にして、エミュレータを再起動します。
すると、GooglePlayが使えるようになって…やっとアズールレーンが動くよという感じですね。

正直、OpenGLやらあの辺りで躓いたり動作重すぎなのかなぁと思っていたのですが、あっさり動いてアニメーションも普通に動くので驚きでした。

これはGenymotionが素晴らしいのか、アズレンは中華産だからユーザの需要としてエミュレータでも動かせなきゃ商売に成らないのでそのようにしているのか?…といった感じですが、あっさり動いてよかったです。
私の環境はGeforceGTSを積んでいてプロプラなドライバを入れているので、このへんの環境が違えばもしかしたら躓くかも知れませんのでその辺りはご了承を…

多分Ubuntu16.04なら何の苦もなく行けると思いますが、14.04でもやりたい人はこの方法を試してみてください〜ということで快適なアズレンライフを!