1.迅为的4418开发板,Ubuntu14.04编译Android7.1。使用迅为搭建好的开发环境并下载Android7.1源码。
2.解压得到的虚拟机设置我进行了调整。硬盘2原来是5G我给到了300。直接上代码:
//看到添加的硬盘信息
fdisk -l
//因为是在原基础上更改,就先给sdb卸载下来了
umount /dev/sdb
//把硬盘格式化成ext3格式
mkfs -t ext3 /dev/sdb
//原文说的是在/home下建立work文件夹,然后挂载硬盘到work目录
mount /dev/sdb work/
//查看挂载情况
df -l
//实现开机自动挂载
vi /etc/fstab
/dev/sdb /home/work ext3 defaults 0 0
3.然后就是解压Android源码了,没用SSH,就先拖到虚拟机之后mv了。(方法很笨,索性管用)
//移动
mv 4418-6818-android7.1-20200811.tar.gz /home/work
//解压
tar -vxf 4418-6818-android7.1-20200811.tar.gz
4. 接着按使用手册里编译Android7.1的步骤来,先看代码:
//安装dtc编译工具:
apt-get install device-tree-compiler
//安装Openjdk1.8:
add-apt-repository ppa:openjdk-r/ppa
apt-get update
apt-get install openjdk-8-jdk
//多个JDK版本切换,都选1069的选项:
update-alternatives --config java
update-alternatives --config javac
update-alternatives --config javadoc
//检查版本号:
java -version
//编译
./4418_create_2G.sh android
5.好的接下来糟心的bug之旅开始了,先是这句:
阿巴阿巴,开始百度 。重新安装CA证书。
sudo apt-get install --reinstall ca-certificates
6.编译了能有12000个文件之后报错了。
官方群里的顾问让我试试删除 ./etc/java-8-openjdk/security/java.security里面的TLSv1和TLSv1.1。改完别忘了重启再编译。
7.再然后就编译一会儿就出错,但出错了还能再编译继续往下进行。最多的报错就是
ninja: build stopped: subcommand failed. make: * [ninja_wrapper] Error 1 ?????
看了一吨文章:
RK3288 源码编译Android 7.1.2 及其常见错误解决方法 - it610.com
有说进程跑满了的:
//查看最大进程数:
sysctl kernel.pid_max
//修改pid_max值为1000000:
echo 1000000 > /proc/sys/kernel/pid_max
//设置永久生效(我没使用)
echo "kernel.pid_max=1000000 " >> /etc/sysctl.confsysctl -p
有修改jack-admin文件的:
1、打开目录:vi prebuilts/sdk/tools/jack-admin (该目录位于源码目录)
2、找到如下语句:
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"
3、将上述语句修改为:
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME"
很不幸上面的我都改了还是会崩。
接着继续。
有增加swap分区的:
1.创建交换分区的文件:增加1G大小的交换分区,则命令写法如下,其中的 count 等于想要的块大小。
dd if=/dev/zero of=/home/swapfile bs=1M count=1024
2.设置交换分区文件:
mkswap /home/swapfile #建立swap的文件系统
3.立即启用交换分区文件:
swapon /home/swapfile #启用swap文件
4.使系统开机时自启用,在文件/etc/fstab中添加一行:
/home/swapfile swap swap defaults 0 0
这次意外的从12000连续编了20000多,每当我以为快要成功了的时候,爱了,意外从不会缺席。
最后4000个文件kaka崩,编二三百个就崩。
我个人觉得可能是这个分区给小了(猜的),毕竟前面那么顺利?后来我直接给到了30G。
再继续,有说什么重新启动一下java server的这里我先粘一下原文,但是实际我没有这么用。
办法二,修改环境变量:
参考:https://blog.csdn.net/bobcat_kay/article/details/76564969?locationNum=10&fps=1,键入命令:
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m"
out/host/linux-x86/bin/jack-admin kill-server
out/host/linux-x86/bin/jack-admin start-server
我的jack-admin路径和他的不一样,可以看出来这里就是关闭一下再打开。
我进到 jack-admin 所在的目录执行 ./jack-admin kill-server 不成功。 好像是Jack server installation not found(记不清了)。然后继续百度。
//安装 Jack serve
./jack-admin install-server jack-launcher.jar jack-server-4.8.ALPHA.jar
接着就kill,start能用了。输入完之后终端给的信息很容易懂 。阿巴阿巴。具体有一点忘了。
8.以上所有方法一起,终于编译Android7.1的36000+个文件从头到尾没有报错给我编译成功了。历时五天,基本上编一次就得半天。到最后也不知道是什么起到了关键作用。记录一下我的吸bug体质。