編譯 Android 7.1 (tvbox版本)固件
準備工作
編譯 Android 對機器的配置要求較高:
64 位 CPU
16GB 物理內存+交換內存
30GB 空閑的磁盤空間用于構建,源碼樹另外占用大約 25GB
官方推薦 Ubuntu 14.04 操作系統,經測試,Ubuntu 12.04 也可以編譯運行成功,只需要滿足 http://source.android.com/source/building.html 里的軟硬件配置即可。編譯環境的初始化可參考 http://source.android.com/source/initializing.html 。
安裝 OpenJDK 8:
sudo apt-get install openjdk-8-jdk
提示:安裝 openjdk-8-jdk,會更改 JDK 的默認鏈接,這時可用:
$ sudo update-alternatives --config java $ sudo update-alternatives --config javac
來切換 JDK 版本。SDK 在找不到操作系統默認 JDK 的時候會使用內部設定的 JDK 路徑,因此,為了讓同一臺機器可以編譯 Android 5.1 及之前的版本,去掉鏈接更方便:
$ sudo /var/lib/dpkg/info/openjdk-8-jdk:amd64.prerm remove
Ubuntu 12.04 軟件包安裝:
sudo apt-get install git gnupg flex bison gperf build-essential \ zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \ libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \ g++-multilib mingw32 tofrodos gcc-multilib ia32-libs \ python-markdown libxml2-utils xsltproc zlib1g-dev:i386 \ lzop libssl1.0.0 libssl-dev
Ubuntu 14.04 軟件包安裝:
sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev \ libesd0-dev libwxgtk2.8-dev squashfs-tools build-essential zip curl \ libncurses5-dev zlib1g-dev pngcrush schedtool libxml2 libxml2-utils \ xsltproc lzop libc6-dev schedtool g++-multilib lib32z1-dev lib32ncurses5-dev \ lib32readline-gplv2-dev gcc-multilib libswitch-perl \ libssl1.0.0 libssl-dev
下載 Android SDK
下載 tvbox 版本的SDK
Android SDK 源碼包比較大,可以通過如下方式獲取Android7.1源碼包:[下載鏈接]
下載完成后先驗證一下 MD5 碼:
$ md5sum /path/to/Firefly-RK3399_Android7.1.2_git_20180126.7z 699cff05bfa39a341e7aae3857cea4a7 Firefly-RK3399_Android7.1.2_git_20180126.7z
確認無誤后,就可以解壓:
mkdir -p ~/proj/firefly-rk3399 cd ~/proj/firefly-rk3399 7z x /path/to/Firefly-RK3399_Android7.1.2_git_20180126.7z -r -o./ git reset --hard
注意:解壓后務必要先更新下遠程倉庫,以下為從 gitlab 處更新的方法:
1. 進入SDK根目錄 cd ~/proj/firefly-rk3399 2. 下載遠程bundle倉庫 git clone https://gitlab.com/TeeFirefly/rk3399-nougat-bundle.git .bundle 3. 若下載倉庫失敗,目前bundle倉庫大約1.4G左右,所以同步的時候可能會出現卡住或失敗的問題, 可以從下方的百度云鏈接下載并解壓到SDK根目錄,解壓指令如下: 7z x rk3399-nougat-bundle.7z -r -o. && mv rk3399-nougat-bundle/ .bundle/ 4. 更新SDK,并且后續更新不需要再次拉取遠程倉庫,直接執行以下命令即可 .bundle/update 5. 按照提示已經更新內容到 FETCH_HEAD,同步FETCH_HEAD到firefly分支 git rebase FETCH_HEAD
[bundle壓縮包]https://pan.baidu.com/s/1ZS130eZcNDmKvBN55oZ5Bg#list/path=%2Fsharelink1414141670-712292296135918%2FAndroid7.1%2FFirefly-RK3399_Android7.1.2_git_20180126%2Fbundle&parentPath=%2Fsharelink1414141670-712292296135918
tvbox版本SDK的整體編譯
HDMI顯示編譯
./FFTools/make.sh -d rk3399-roc-pc -j8 -l ROC_RK3399_PC-userdebug ./FFTools/mkupdate/mkupdate.sh -l ROC_RK3399_PC-userdebug
手動編譯ROC-RK3399-PC
編譯前執行如下命令配置環境變量:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
編譯kernel:
cd ~/proj/firefly-rk3399/kernel/ make ARCH=arm64 firefly_defconfig make -j8 ARCH=arm64 rk3399-roc-pc.img
編譯uboot:
cd ~/proj/firefly-rk3399/u-boot/ make rk3399_box_defconfig make ARCHV=aarch64 -j8
編譯android:
cd ~/proj/firefly-rk3399/ source build/envsetup.sh lunch ROC_RK3399_PC-userdebug make -j8 ./mkimage.sh
打包成統一固件 update.img
編譯完可以用Firefly官方的腳本打包成統一固件,執行如下命令:
./FFTools/mkupdate/mkupdate.sh -l ROC_RK3399_PC-userdebug
打包完成后將在rockdev/Image-XXX/ 目錄下生成統一固件: product名XXX_XXX_日期XXX.img
在 Windows 下打包統一固件 update.img 也很簡單,將編譯生成的文件拷貝到 AndroidTool 的 rockdev\Image 目錄中,然后運行 rockdev 目錄下的 mkupdate.bat 批處理文件即可創建 update.img 并存放到 rockdev\Image 目錄里。
生成tf卡啟動的固件
編譯完之后,先執行以下命令,然后用Firefly官方的腳本打包成統一的SD卡固件,執行如下命令:
./mkimage sdboot ./FFTools/mkupdate/mkupdate.sh -l ROC_RK3399_PC-userdebug
打包完成后將在rockdev/Image-XXX/ 目錄下生成統一固件: product名XXX_XXX_日期XXX.img
(注意:SD卡固件以及EMMC固件在生成的時候名字并無不同,在官網資源上面的帶SD字樣的固件是在打包生成之后,手動修改的名字,用以用戶做區分)
用瑞芯微 SD_Firmware_Tool 工具創建sd卡啟動,首先選擇設備,在功能模式選擇sd啟動,然后選擇上傳生成的固件,最后點擊創建,界面如下圖:
燒寫分區映像
編譯的時候執行 ./mkimage.sh 會重新打包 boot.img 和 system.img, 并將其它相關的映像文件拷貝到目錄 rockdev/Image-roc_3399_pc/ 中。以下列出一般固件用到的映像文件:
boot.img :Android 的初始文件映像,負責初始化并加載 system 分區。
kernel.img :內核映像。
misc.img :misc 分區映像,負責啟動模式切換和急救模式的參數傳遞。
parameter.txt :emmc的分區信息
recovery.img :急救模式映像。
resource.img :資源映像,內含開機圖片和內核的設備樹信息。
system.img :Android 的 system 分區映像,ext4 文件系統格式。
trust.img :休眠喚醒相關的文件
rk3399_loader_v1.08.106.bin :Loader文件
uboot.img :uboot文件
請參照 如何升級固件 一文來燒寫分區映像文件。
如果使用的是 Windows 系統,將上述映像文件拷貝到 AndroidTool (Windows 下的固件升級工具)的 rockdev\Image 目錄中,之后參照升級文檔燒寫分區映像即可,這樣的好處是使用默認配置即可,不用修改文件的路徑。
update.img 方便固件的發布,供終端用戶升級系統使用。一般開發時使用分區映像比較方便。
-
嵌入式主板
+關注
關注
7文章
6097瀏覽量
36152 -
安卓
+關注
關注
5文章
2149瀏覽量
58382 -
Firefly
+關注
關注
2文章
541瀏覽量
7412
發布評論請先 登錄
RK3399 Android7.1 DTS介紹
RK3399 Android7.1 SDK軟件介紹
介紹瑞芯微RK3399固件在windows系統下燒寫的步驟
分享一種Face-RK3399 Android固件產品的編譯方法
RK3399編譯Android7.1 Industry固件步驟分析
RK3399 Android7.1 WiFI關閉屏幕后DLNA無法發現設備
RK3399 Android7.1 Audio中的MCLK時鐘相關資料分享
RK3399 Android7.1系統重啟調用過程相關資料介紹
RK3399 Android 7.1系統TSADC驅動流程小結
ROC RK3399 PC Pro源代碼Android 7.1 industry SDK

ROC RK3399 PC Pro固件Android 7.1(industry)固件

ROC RK3399 PC Pro固件Android10.0

評論