MIPS Android5.1は実在する


Androidはそのマルチプラットフォーム性がそれなりに強調されてきた。Googleがどのくらいx86とARM以外のAndroidに投資しているのかはなんとも言えないが、Android5の発表時には、x86、x64、MIPS32MIPS64、ARMv7、ARMv8(いわゆる64bit ARM)のプラットフォームをサポートしていることになっていた。
しかし、GoogleMIPSの配布するシステムイメージはAndroid4.xまでしかない。どうやってアプリケーションデベロッパMIPSネイティブなアプリケーションを書かせようと考えているのかは謎だが、現状は単にSDKをダウンロードするだけではAndroid4.xしか使用できないということになる。知る限り、市場にはMIPSを採用したAndroid5.xデバイスが存在しないため、あまりターゲットする意義が無いというのは事実かもしれない。
... 仕方が無いので、手元でAOSPをビルドすることで、MIPSなAndroid5環境を構築してみた。ここではAndroid 5.1、つまりLollipop-MR1をビルドしている。

ソースツリーのセットアップ

MIPSはAOSP本家に統合されていないパッチセットをGitHubで公開している。これを使用すると基本的にはMIPS用のツリーを一撃で構築することができる。

(適当にディレクトリを掘ってchdirする)
repo init -u git://github.com/MIPS/manifests.git -b dev-mips-lollipop-mr1 -m mips-lp-5.1.1_r6.m2.xml
repo sync
. build/envsetup.sh
lunch full_mips-eng

5.1.1が追加されたのはつい最近なので、ブランチの状況をチェックする必要があるかもしれない( https://github.com/MIPS/manifests/tree/dev-mips-lollipop-mr1 )。
あとはmakeすれば良いだけだが、手元の環境ではSDKの構築時に失敗してしまった。

prebuilts/sdk/api/22.txt:5339: error 9: Removed public method android.app.admin.DevicePolicyManager.getTrustAgentConfiguration
prebuilts/sdk/api/22.txt:5388: error 9: Removed public method android.app.admin.DevicePolicyManager.setTrustAgentConfiguration

******************************
You have tried to change the API from what has been previously released in
an SDK.  Please fix the errors listed above.
******************************

今回欲しいのはシステムイメージだけなので、原因を追求するのはやめて、単に"make -k"でエラーを無視することにした。
すごいどうでもいいけど:

Some of the repositories which had no MIPS changes are pointed to AOSP.
This is required as these repositories had objects larger than 100 MB
which github rejects when pushing the lollipop branches and tags.

そんな罠が。。

起動

lunchした後のシェルならば、

emulator -shell -show-kernel

のように普通のemulatorコマンドで起動できる。使用感もごく普通で、Write Once Run Anyware感ある(ARTにさえ乗っていれば)。