记录一次坎坷的Android7.1编译经过

1.迅为的4418开发板,Ubuntu14.04编译Android7.1。使用迅为搭建好的开发环境并下载Android7.1源码。记录一次坎坷的Android7.1编译经过_第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之旅开始了,先是这句:

记录一次坎坷的Android7.1编译经过_第2张图片

阿巴阿巴,开始百度 。重新安装CA证书。

sudo apt-get install --reinstall ca-certificates

6.编译了能有12000个文件之后报错了。

记录一次坎坷的Android7.1编译经过_第3张图片

官方群里的顾问让我试试删除 ./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体质。

你可能感兴趣的:(嵌入式Linux驱动学习笔记,android,ubuntu)