NanoPi 2 Fire というのを買いました。
左から、Raspberry Pi, Orange Pi, NanoPi です。USB はひとつしかついていませんが、HDMIがあってディスプレイ出力ができます。
さっくりと Debian が動いたり
さっくりと Android 5.1 が動いたりします。
Android のほうは Google Play が入っているので、ストアから Android アプリを入れられるという優れものです。Orange Pi の Android には Google Play が入っていないので、こっちのほうがいいかなと。
値段は、$22.99 なので、3,000円弱で変えます。たぶん、Scratch などもインストールすれば動くはずなので、Raspberry Pi 互換機として使うことができます。
だが、Android をビルドする
そんな訳で、Android 5.1 をソースコードからビルドすることにします。
手順自体は、
NanoPi 2 Fire – FriendlyARM WiKi
http://wiki.friendlyarm.com/wiki/index.php/NanoPi_2_Fire#Compile_Android
にあるので、これを参考にしてがんがんビルドをしていきます。私の場合、OSの入れ直しをしたり、コードを変えてみたりとあれこれやったので6日間掛かっていますが、おそらく1日ビルドをすれば終わるでしょう(苦笑)。
注意点としては、
- Ubuntu 14.04 の 64bit 版を使う(現在の最新は 16.04 なので注意)
- ディスク容量は160GB 程度必要
- メモリは8GB 程度必要
というところです。Hyper-V の仮想環境でビルドをしたのですが、この程度のマシンパワーが必要になります。Ubuntu は最新の 16.04 などを使うと c++_static あたりでエラーになるので、14.04 を使います。これは Android 側の制約じゃないかと思うのですが…さだかではありません。
内部的にビルド時のフォルダが、/opt/FriendlyARM/s5p4418 固定になっているので、適当に ln -s してやります。
綺麗にビルドが通ると、/opt/FriendlyARM/s5p4418/android/out/target/product/nanopi2 フォルダに、
- boot.img
- cache.img
- userdata.img
- system.img
ができあがります(Compile Linux kernelの結果も混じっているかもしれません)。
micro SD カードに焼く
これを micro SD カードに焼くのですが、焼き方は、
NanoPi 2 Fire – FriendlyARM WiKi
http://wiki.friendlyarm.com/wiki/index.php/NanoPi_2_Fire#Under_Linux_Desktop
に書いてあります。ちょっとややこしいのが、sd-fuse_nanopi2 フォルダ内に android フォルダを作って、先の *.img を置いて動かす必要があります。
な感じで、ln -s しておくとよいでしょう。
あと、私の場合 Ubuntu 14.04 を Hyper-V 上で作ってしまったため、USB 経由で micro SD カードを認識できません(Hyper-V の場合はここが落とし穴ですね。ゲストOSが Windows の場合は、リモートデスクトップで接続することで USB 関係が使えるようになります)。色々考えたのですが、Raspberry Pi から、micro SD カードに Android を焼くことにしました。なるほど、Raspberry Pi ならば普通の Linux ですからね。
samba を使って Raspberry Pi から Hyper-V 上の Ubuntu のフォルダをマウントして、micro SD カードに焼きます。
そして、無事、自前でビルドした Android 5.1 を動かすことができました。ぱちぱちぱち。
次はどうするのか?
まあ、一度 Android をビルドしてみたかっただけというのも本音なのですが(昔は、ガラケーのOSとか仕事でビルドしてましたから)、ここまでできたら、次は自前のモジュールを入れて「オレオレAndroid」を作りたいですよね。NanoPi には GPIO がついているのでこれを操作するために、Python を入れるといいかなと考えています。Google Play から入れるものもあるのですが、GPIO を直接触れるのかわからないし(後で試しますが)、どうせならば直接アクセスできるように拡張してしまうのも手でしょう。ということで、これは後日に。