admin管理员组文章数量:1536092
0. 环境
win10电脑+ubuntu18虚拟机
firefiy-rk3399 jd4v2 核心板+底板
0.1 准备硬件需求
编译 Android 对机器的配置要求较高:
64 位 CPU
16GB 物理内存+交换内存
30GB 空闲的磁盘空间用于构建,源码树另外占用大约 25GB, 如果要编译源码则还需要 150GB 的磁盘空间。
设置虚拟机硬盘220GB先。编译完还有64.4GB空闲的。
0.2 依赖
安装 OpenJDK 8:
sudo apt-get install openjdk-8-jdk
提示:安装 openjdk-8-jdk,会更改 JDK 的默认链接,这时可用:
$ sudo update-alternatives --config java
[sudo] password for xxjianvm:
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
* 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
$ sudo update-alternatives --config javac
来切换 JDK 版本。SDK 在找不到操作系统默认 JDK 的时候会使用内部设定的 JDK 路径,因此,为了让同一台机器可以编译 Android 5.1 及之前的版本,去掉链接更方便:
$ sudo /var/lib/dpkg/info/openjdk-8-jdk:amd64.prerm remove
Ubuntu16.04或18.04 软件包安装:
sudo apt-get update
sudo apt-get install git gnupg flex bison gperf libsdl1.2-dev \
libesd-java libwxgtk3.0-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-dev gcc-multilib libswitch-perl libssl-dev unzip zip
1. 准备android源码
到这里下载
https://www.t-firefly/doc/download/92.html
通过百度网盘下载,如果需要加速,可以到pdd上买
firefly_rk3399_industry7.1_git_20211216
2. 拷贝源码到虚拟机
我的路径
$ cd ~/firefly_rk3399_industry7.1_git_20211216
$ tree
.
├── bundle
│ └── rk3399-industry-nougat-bundle.7z
├── firefly_rk3399_industry7.1_git_20211216.7z.001
├── firefly_rk3399_industry7.1_git_20211216.7z.001.md5sum
├── firefly_rk3399_industry7.1_git_20211216.7z.002
├── firefly_rk3399_industry7.1_git_20211216.7z.002.md5sum
├── firefly_rk3399_industry7.1_git_20211216.7z.003
├── firefly_rk3399_industry7.1_git_20211216.7z.003.md5sum
├── firefly_rk3399_industry7.1_git_20211216.7z.004
└── firefly_rk3399_industry7.1_git_20211216.7z.004.md5sum
1 directory, 9 files
3. 准备SDK
7z x firefly_rk3399_industry7.1_git_20211216.7z.001 -r -o.
git reset --hard
注意:解压后务必要先更新下远程仓库。
把~/firefly_rk3399_industry7.1_git_20211216/bundle/rk3399-industry-nougat-bundle.7z
复制到
~/firefly_rk3399_industry7.1_git_20211216/rk3399-industry-nougat-bundle.7z
解压
7z x rk3399-industry-nougat-bundle.7z -r -o. && mv rk3399-industry-nougat-bundle/ .bundle/
更新SDK,并且后续更新不需要再次拉取远程仓库,直接执行以下命令即可
.bundle/update
按照提示已经更新内容到 FETCH_HEAD,同步FETCH_HEAD到firefly分支
git rebase FETCH_HEAD
4. 整体编译公版hdmi(出现了问题3,觉得每次都要从头来,因此转为分步编译)
export LC_ALL=C
./FFTools/make.sh -d rk3399-firefly-aiojd4 -j8 -l rk3399_firefly_aiojd4-userdebug
./FFTools/mkupdate/mkupdate.sh -l rk3399_firefly_aiojd4-userdebug
问题1:flex-2.5.39: loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
在
sudo gedit ~/.bashrc
最后添加
export LC_ALL=C
然后
source ~/.bashrc
问题2:fatal error: error in backend: IO failure on output stream.
空间不足而已
问题3:SSL error when connecting to the Jack server. Try 'jack-diagnose'
cd prebuilts/sdk/tools/
./jack-admin kill-server
./jack-admin start-server
sudo gedit /etc/java-8-openjdk/security/java.security
把
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
include jdk.disabled.namedCurves
修改为
jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, \
DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
include jdk.disabled.namedCurves
5. 分步编译
5.1 环境变量
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
5.2 编译uboot:
cd u-boot/
make rk3399_defconfig
make ARCHV=aarch64 -j8
5.3 编译kernel:
cd kernel/
make ARCH=arm64 firefly_defconfig
make -j8 ARCH=arm64 rk3399-firefly-aiojd4.img
5.4 编译android:
source build/envsetup.sh
lunch rk3399_firefly_aiojd4-userdebug
make -j8
./mkimage.sh
5.5 打包成统一固件
编译完可以用Firefly官方的脚本打包成统一固件,执行如下命令:
./FFTools/mkupdate/mkupdate.sh -l rk3399_firefly_aiojd4-userdebug
6. 大概耗时
i7的笔记本cpu,3.2GHZ,虚拟机开了8线程
大概开始时间:16:30
问题3出错了,17:05再次开始执行编译
18:14就完成了。
~/firefly_rk3399_industry7.1_git_20211216/rockdev/Image-rk3399_firefly_aiojd4$ tree
.
|-- AIO-3399JD4_Industry7.1.2_HDMI_220710.img
|-- MiniLoaderAll.bin
|-- baseparameter.img
|-- boot.img
|-- kernel.img
|-- misc.img
|-- oem.img
|-- parameter.txt
|-- pcba_small_misc.img
|-- pcba_whole_misc.img
|-- recovery.img
|-- resource.img
|-- system.img
|-- trust.img
`-- uboot.img
0 directories, 15 files
这个是打包好的系统镜像:AIO-3399JD4_Industry7.1.2_HDMI_220710.img
后面观察到firefly_rk3399_industry7.1_git_20211216/device/rockchip/rk3399/rk3399_firefly_aiojd4则会个文件夹是存放和板卡相关的配置文件的
参考链接
https://wiki.t-firefly/zh_CN/Core-3399-JD4/compile_android7.1_industry_firmware.html
版权声明:本文标题:firefly-rk3399jd4核心板+底板:编译android 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1726916789a1090205.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论