LoginSignup
0
0

More than 3 years have passed since last update.

Orange Pi 4用のAndroidイメージをDockerでビルドする

Last updated at Posted at 2020-11-10

20191205_orangepi4_eyecatch.jpg

Orange Pi 4はRockchip RK3399を搭載したシングルボードコンピュータです。
公式ページからAndroidイメージをダウンロードする事もできますが、カスタマイズをする場合は自分でイメージをビルドする必要があります。

必要な環境

  • 100GB 以上のストレージ空き容量
  • Docker環境

(マニュアルでは、Ubuntu 14.04にJDKや依存関係をインストールするよう指示されていますが、現在Ubuntu 14.04をネイティブで使用している方は少ないと思うので、ビルド環境をDockerにまとめました。)
私はDockerホストはUbuntu 20.04を使っています。

参考 : 私の開発環境
Ryzen 3700X / 32GB RAM
makeの-jNオプションによるかもしれませんが、ビルド中は10GB程度のメモリを消費する模様です。

手順

  1. http://www.orangepi.org/downloadresources/ から
    Orange Pi 4B / Android Source Codeをダウンロードしましょう。中国以外の国からはGoogle Driveでダウンロードするのが良いでしょう。サイズは16GBです。

  2. ソースコードのZipファイルを展開
    落としてきた Android code source.zipを適当な場所に展開します。
    (ここから先は展開したファイル中にある中国語PDFの"七、 Android 编译环境搭建"の内容と、環境をDockerに置き換えたものです。)

  3. tar.gzaXを結合/展開
    rk3399-android-8.1.tar.gz*がある場所で

    $ mkdir OrangePi_4
    $ cat rk3399-android-8.1.tar.gz* > rk3399-android-8.1.tar.gz
    $ tar xvf rk3399-android-8.1.tar.gz -C OrangePi_4
    
  4. ビルド!

    $ cd OrangePi_4/rk3399-android-8.1/
    $ docker run --rm -v $(pwd):/workdir aquahika/android-buildenv-orangepi4 ./make.sh -F -M -u
    

    私の環境ではビルドが終わるまで約1時間でした

  5. 成果物
    OrangePi_4/rk3399-android-8.1/rockdev/Image-rk3399_midにあります

    $ cd rockdev/Image-rk3399_mid
    $ ls
    boot.img           misc.img       pcba_small_misc.img  resource.img  uboot.img
    kernel.img         oem.img        pcba_whole_misc.img  system.img    update.img
    MiniLoaderAll.bin  parameter.txt  recovery.img         trust.img     vendor.img
    

    手元にOrangePi4がまだ無いので実際に書き込んではいませんが、ビルド自体はうまく出来ているようです。

マルチコア用並列ビルドの設定

OrangePi_4/rk3399-android-8.1/make.shの11行目にMAKE="make -j8"と書いてあり、デフォルトでは8スレッドで並列ビルドをするようです。
私のRyzen 7 3700Xは8コア16スレッドなので、MAKE="make -j16"に書き換えました。

-jNオプションはコア数+1を指定したほうがよい説もあります。が、すべてのコアがフルに使われている様子をシステムモニターで眺めていると気持ち良いので(笑)、最大スレッド数にしています。

ビルド環境のDockerイメージ / Dockerfile

Issue/PR歓迎しております。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0