Googleは、AndroidファームウェアのコンパイルにLinuxのディストリビューション版であるUbuntuを使うことを提案している。Androidファームウェアをコンパイルするには、必要に応じてUbuntu PC上に適切な環境を構築する必要がある。
コンパイル準備完了
Androidをコンパイルするには、高度なマシン構成が必要だ:
- 64ビットCPU (システム設定」→「バージョン情報」→「xxビットシステム」を開いて確認してください。)
- 16GB 物理メモリ + スワップ・メモリ (システム設定」→「バージョン情報」→「xxメモリ」を開いて確認する)。
- 250GBのディスク空き容量 (ターミナルを開き、"df -h "コマンドを入力して確認する) 公式にはUbuntu 18.04が推奨されている。 (システム設定」→「バージョン情報」→「システムバージョン」を開いて確認してください。) コンパイル環境の初期化は、以下を参照できる。 http://source.android.com/source/initializing.html .
ソースコードのダウンロード
ダウンロード エッジ2 Android SDK 圧縮されたパッケージを解凍し、repo-edge2ディレクトリを生成します。 エッジ2 Android SDK 圧縮パッケージ。注:Mixte Edge 2を購入されたお客様には、ダウンロード用のリンクが記載された電子メールが送信されます。 エッジ2 Android SDK 圧縮されたパッケージは、電子メールを確認してください。届かない場合は エッジ2 Android SDK より info@mixtile.com 準備後 エッジ2 Android SDK パッケージは、以下のコマンドを実行してください:
tar -xzvf mixtile-edge2_android11_sdk.tar.gz
カーネルリポジトリをクローンする(エラーがあれば、もう一度実行してください)
cd repo-edge2
git clone https://github.com/mixtile/linux.git -b mixtile/edge2/android11/kernel4.19/pad カーネル
コンパイラ環境の構築
ホスト環境のその他の影響を取り除くには、dockerを使うことを推奨する。
UbuntuにDockerをインストールする
古いドッカーがあれば削除する
sudo apt-get remove docker docker-engine docker.io containerd runc
ドッカーをインストールする
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - -.
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" を追加します。
sudo apt-get update
sudo apt-get install docker-ce
テスト・ドッカー
sudo docker run hello-world
以下は、上記のコマンドを実行した結果である:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:bfea6278a0a267fad2634554f4f0c6f31981eea41c553fdf5a83e95a41d40c38
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Dockerfileのダウンロード
以下のURLから正しいDockerfileをダウンロードすることをお勧めします。必要に応じて、Dockerfileを参照し、お客様の要件に合うように修正することができます。こちらから Dockerfile.zip
ドッカーイメージの生成
正しいdockerfileをダウンロードしたら、以下の手順に従ってください。
- 先ほどダウンロードしたDockerfile.zipを解凍する。
- 解凍したDockerfileフォルダに入り、ファイル名を "Dockerfile.txt "から "Dockerfile "に変更する。
- Dockerfile "と同じディレクトリで以下の操作を行ってください。
sudo docker build -t edge2_build_env .
生成に成功すると、以下の情報がターミナルに出力され、それが最後の文となる:
Successfully tagged edge2_build_env:latest
ブート・コンパイル環境
スクラムを組む
touch edge2-build.sh
chmod +x edge2-build.sh
(edge2-build.shは任意のフォルダに作成できます)
このスクリプトの内容は以下のように参照できる。
#!/bin/bash
export ANDROID_BUILD_TOP=/home/userx/xxx/repo-edge2
sudo docker run -it --rm -v $ANDROID_BUILD_TOP:/build edge2_build_env:latest
注:
ANDROID_BUILD_TOP: absolute path of local source code
/build: absolute path of source code in docker environment
edge2_build_env:latest: docker image for build aosp
ブートスクリプト
./edge2-build.sh
スクリプト実行後の端末のメッセージ
root@c9fa6274dd9f:/#
root@c9fa6274dd9f:/# cd build/
root@c9fa6274dd9f:/build# ls -l
total 172
lrwxrwxrwx 1 1000 1000 19 Dec 7 08:14 Android.bp -> build/soong/root.bp
-r--r--r-- 1 1000 1000 92 Dec 7 08:14 Makefile
drwxr-xr-x 4 1000 1000 4096 Dec 7 08:14 RKDocs
drwxr-xr-x 5 1000 1000 4096 Dec 7 08:14 RKTools
drwxr-xr-x 35 1000 1000 4096 Dec 7 08:14 art
drwxr-xr-x 15 1000 1000 4096 Dec 7 08:14 bionic
drwxr-xr-x 3 1000 1000 4096 Dec 7 08:14 bootable
lrwxrwxrwx 1 1000 1000 26 Dec 7 08:14 bootstrap.bash -> build/soong/bootstrap.bash
drwxr-xr-x 5 1000 1000 4096 Dec 7 08:14 build
lrwxrwxrwx 1 1000 1000 46 Dec 7 08:15 build.sh -> device/rockchip/common/build/rockchip/build.sh
drwxr-xr-x 3 1000 1000 4096 Dec 7 08:14 compatibility
drwxr-xr-x 14 1000 1000 4096 Dec 7 08:14 cts
drwxr-xr-x 8 1000 1000 4096 Dec 7 08:15 dalvik
drwxr-xr-x 5 1000 1000 4096 Dec 7 08:15 developers
drwxr-xr-x 21 1000 1000 4096 Dec 7 08:15 development
drwxr-xr-x 8 1000 1000 4096 Dec 7 08:15 device
drwxr-xr-x 322 1000 1000 12288 Dec 7 08:17 external
drwxr-xr-x 16 1000 1000 4096 Dec 7 08:25 frameworks
drwxr-xr-x 13 1000 1000 4096 Dec 7 08:18 hardware
-r--r--r-- 1 1000 1000 162 Dec 7 08:15 javaenv.sh
drwxr-xr-x 20 1000 1000 4096 Dec 7 08:18 libcore
drwxr-xr-x 8 1000 1000 4096 Dec 7 08:18 libnativehelper
drwxr-xr-x 11 1000 1000 4096 Dec 7 08:18 mkcombinedroot
-r-xr-xr-x 1 1000 1000 9093 Dec 7 08:15 mkimage.sh
-rwxrwxr-x 1 1000 1000 10503 Feb 18 08:55 mkimage_ab.sh
drwxr-xr-x 9 1000 1000 4096 Dec 7 08:19 packages
drwxr-xr-x 6 1000 1000 4096 Dec 7 08:19 pdk
drwxr-xr-x 10 1000 1000 4096 Dec 7 08:19 platform_testing
drwxr-xr-x 33 1000 1000 4096 Dec 7 08:25 prebuilts
-r-xr-xr-x 1 1000 1000 519 Dec 7 08:25 restore_patches.sh
drwxr-xr-x 9 1000 1000 4096 Mar 29 06:57 rkbin
drwxr-xr-x 5 1000 1000 4096 Dec 7 08:25 rkst
drwxr-xr-x 24 1000 1000 4096 Dec 7 08:25 sdk
drwxr-xr-x 44 1000 1000 4096 Jan 19 06:56 system
drwxr-xr-x 10 1000 1000 4096 Dec 7 08:25 test
drwxr-xr-x 4 1000 1000 4096 Dec 7 08:25 toolchain
drwxr-xr-x 23 1000 1000 4096 Dec 7 08:26 tools
drwxr-xr-x 29 1000 1000 4096 Mar 29 07:02 u-boot
drwxr-xr-x 7 1000 1000 4096 Dec 14 03:20 vendor
コンパイル
ユニファイド・ファームウェアのコンパイル
スクリプトを起動すると、docker環境上の/buildディレクトリにsdkが展開される。
注意:以下のように "lunch mixtile_edge2-userdebug "コマンドを実行すると、5分以上かかりますので、気長に待つようにしてください。
source build/envsetup.sh
lunch mixtile_edge2-userdebug
./build.sh -CKAUBuo
sdkのコンパイルには長い待ち時間が必要ですが、コンパイルに成功すると、rockdev/Image-mixtile_edge2ディレクトリに複数の画像ファイルが生成されます。
画像ファイルの名前はimage-release-ota-unknown.zip、image-release-unknown.imgとなる。
cd rockdev/Image-mixtile_edge2
ls -l
baseparameter.img
boot-debug.img
boot.img
config.cfg
dtbo.img
image-release-mixtile_edge2-v1.0.7.img
image-release-ota-mixtile_edge2-v1.0.7.zip
MiniLoaderAll.bin
misc.img
parameter.txt
pcba_small_misc.img
pcba_whole_misc.img
resource.img
super.img
uboot.img
vbmeta.img
画像説明
image-release-mixtile_edge2-v1.0.7.imgは統一ファームウェアです。このファームウェアはRKDevToolでアップグレードするか、Rockchip Create Upgrade Disk Toolでsdカードを作成する必要があります:
image-release-:固定フィールド、意味なし
mixtile_edge2: 製品名
v1.0.7: ファームウェアのバージョン
image-release-ota-mixtile_edge2-v1.0.7.zipはローカルアップデートパッケージで、このファームウェアをアップグレードした後、すべてのユーザーデータは失われません。
u-bootをコンパイルする
u-bootのソースコードがコンパイルされると、uboot.imgがパッケージ化され生成される。u-bootを個別にコンパイルするには、2つの方法があります。方法1 u-bootのソースディレクトリに入り、u-bootをコンパイルします。
./make.sh mixtile-edge2
方法2 sdkソース・ディレクトリに入り、u-bootをコンパイルする。
source build/envsetup.sh
lunch mixtile_edge2-userdebug
./build.sh -U
コンパイルが完了したら、u-bootのソースディレクトリに入り、uboot.imgを探します。uboot.imgは、書き込みツールでEdge 2に単独で書き込むことができます。以下を参照してください。 Mixtile Edge 2キットへのオペレーティングシステムのインストール をご覧ください。
カーネルのコンパイル
カーネルのソースコードがコンパイルされてkenrel.imgとresource.imgが生成され、最終的にAndroidによってboot.imgとしてコンパイル、パッケージ化される。
source build/envsetup.sh
lunch mixtile_edge2-userdebug
./build.sh -CKA
コンパイルが完了したら、out/target/product/mixtile-edge2ディレクトリに入ると、boot.imgがありますので、これを別途書き込みツールでEdge 2マザーボードに書き込みます。詳細は Mixtile Edge 2キットへのオペレーティングシステムのインストール.
アンドロイドをコンパイルする
Androidのソースコードがコンパイルされると、最後にsuper.imgが生成される。
source build/envsetup.sh
lunch mixtile_edge2-userdebug
./build.sh -A
コンパイル完了後、super.imgはout/target/product/mixtile-edge2ディレクトリにあります。これは別途、書き込みツールを使ってEdge 2マザーボードに書き込むことができます。詳細は Mixtile Edge 2キットへのオペレーティングシステムのインストール.