RK3288 源码编译Android 7.1.2 及其常见错误解决方法

拿到RK3288板子后。上一下靓照。正面

背面

然后我们去官网下载源码。

连接:https://tinkerboarding.co.uk/wiki/index.php/Software

RK3288 源码编译Android 7.1.2 及其常见错误解决方法_第1张图片

压缩档案大概有40多G.

 

然后开始准备工作,准备编译环境。

安装Ubuntu。

检测Ubuntu是多少位可以用:sudo uname --m  ,如果显示i686,你安装了32位操作系统,如果显示 x86_64,你安装了64位操作系统。

注:这里大家要注意一下,安装的Ubuntu一定要是64bit。

      我先用的32bit然后环境配置怎么都过不去。

      最后只好重新来过,换成64bit。我用的是Ubuntu16.04LTS 64bit.

      

注意这里要分配足够大的内存空间才能放得下解压缩的文件。

我这里先安装的时候准备了100G方便后面使用,然后外挂了一个240G的硬盘。

把这个240G的硬盘做成一个Samba服务器,和windows互通。

外挂硬盘教程:https://blog.csdn.net/shao15232/article/details/100972195

Samba服务器教程:https://blog.csdn.net/shao15232/article/details/88406120

大家参考一下。

然后把

这个文件拷贝到samba服务器设置的那个文件夹下。我这里用的名字是Android_share。

使用  sudo  tar  xvzf Android Q-7.1.2.tar.gz  解压大概一个小时作用。

然后得到

这个文件。 

这个时候我们的原材料准备完毕。

 

接下来我们需要安装编译器等等,这些环境设置之类的。

 

第一步:安装JDK

安装

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk

环境变量设置

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

然后执行一下

source /etc/profile

注:如果要永久设置好环境变量,那么需要去 /etc/profile 里面进行设定。

 

第二步 : 安装NDK

我们的安卓源码里面有自带的NDK,所以我们拷贝到 /usr/lib/jvm/ 目录下。

然后添加环境变量就可以使用了。

拷贝

cp -a ndk /usr/lib/jvm

设置环境变量

export NDK_HOME=/usr/lib/jvm/ndk/build
export PATH=$NDK_HOME:$PATH
NDK_HOME=/usr/lib/jvm/ndk/build
export PATH=$NDK_HOME:$PATH
source /etc/profile

注:这里要设置到build里面,找到ndk-build这个可执行文件才能使用。

       一样的,如果要永久设置好环境变量,那么需要去 /etc/profile 里面进行设定。

 

第三步: 测试JDK、NDK是否安装成功。

java -version
java
javac
ndk-build -v

当出现:

RK3288 源码编译Android 7.1.2 及其常见错误解决方法_第2张图片

RK3288 源码编译Android 7.1.2 及其常见错误解决方法_第3张图片

RK3288 源码编译Android 7.1.2 及其常见错误解决方法_第4张图片

出现这些信息的时候,说明上面安装的JDK、NDK成功了。

那么接着往下走。

 

第四步:

安装交叉编译工具。

sudo apt-get install gcc-arm-linux-gnueabihf 
sudo apt-get install lzop 
sudo apt-get install libncurses5-dev 
sudo apt-get install libssl1.0.0 
sudo apt-get install libssl-dev 
sudo apt-get install libc6:i386 
sudo apt-get install zip 
sudo apt-get install unzip 
sudo apt-get install git-core 
sudo apt-get install gnupg 
sudo apt-get install flex 
sudo apt-get install bison 
sudo apt-get install gperf 
sudo apt-get install build-essential 
sudo apt-get install curl 
sudo apt-get install zlib1g-dev 
sudo apt-get install gcc-multilib 
sudo apt-get install g++-multilib 
sudo apt-get install libc6-dev-i386  
sudo apt-get install lib32ncurses5-dev 
sudo apt-get install x11proto-core-dev 
sudo apt-get install libx11-dev 
sudo apt-get install lib32z-dev     
sudo apt-get install ccache 
sudo apt-get install libgl1-mesa-dev 
sudo apt-get install libxml2-utils 
sudo apt-get install xsltproc

这些安装完成后。

 

第五步:先编译u-boot

编译u-boot, 先产生.config文件,最后产生rk3288_loader_v1.06.233.bin文件。

cd u-boot
make rk3288_secure_defconfig
make   //这里我们不用 -j4, 否则可能内存不够过不去。

 

第六步:编译kernel

(生成kernel.img 和 resource.img)

make ARCH=arm rockchip_defconfig
make ARCH=arm rk3288-miniarm.img

 

第七步:编译Android7.1.2

编译Android7.1.2 AOSP(在目录rockdev/Image-rk3288
       下生成boot.img、pcba_small_misc.img 、recovery.img、misc.img、
       pcba_whole_misc.img、system.img)

cd ..
source build/envsetup.sh
lunch rk3288-userdebug
make
./mkimage.sh

 

第八步:收集img 和 mkupdate

(在目录RKTools/linux/Linux_Pack_Firmware/
rockdev_rk3288下生成RK3288UbootLoader.bin 和 update.img)

cd RKTools/linux/Linux_Pack_Firmware/rockdev
./collectImages.sh && ./mkupdate.sh

 

第九步:产生bin档

在windows 下打开 SpiImageTools.exe 加在update.img,
会在当前文件夹下产生bin 档(该工具在源码目录下 RKTools\windows)

 

第十步:制作img

打开Win32diskImager.exe 将bin 档烧写到SD卡中,然后上电启动RK3288

 

到这里,我们的安卓镜像就做完了。一路顺利那么恭喜你。

但是我遇到很多问题,下面介绍一下。

第一个:jack-server.

Warning: This may have produced partial or corrupted output. ninja: build stopped:

subcommand failed. make: *** [ninja_wrapper] 错误 1

解决办法:

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"

主要是添加了-Xmx4096m参数。

4、重启jack-server , 这个是当前目录为MySource。

./prebuilts/sdk/tools/jack-admin stop-server 

./prebuilts/sdk/tools/jack-admin start-server

然后就可以了,继续编译就好。

 

然后我在重启jack-server的时候又遇到问题:

Failed to authenticate Jack server certificate. Try 'jack-diagnose'

ninja: build stopped: subcommand failed.

然后我们需要找到这两个文件,这两个文件的目录是:

.jack-settings

 

config.properties

这个时候请参考:https://cloud.tencent.com/developer/article/1414273

这篇文章主要介绍我们编译不过的时候,如何配置和修改port和admin。注意一定要对上号。

大家要注意这两个文件的权限。都是rw00.

到这里重启jack-server就可以了。

 

然后接着compile.

跑着跑着又来问题了。

ninja: fatal: fork: Cannot allocate memory

ninja: build stopped: subcommand failed.

 

可以通过增加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

完成后接着编译。

make后会出现错误还是一样的错误,但是在往前走。两万四千多个文件一直在往前编译。

说明编译在继续只是又没有内存了。不管他就好了,接着make。

我的电脑基本都出现这样了,

RK3288 源码编译Android 7.1.2 及其常见错误解决方法_第5张图片

然后有时候会CPU跑到30-40%这个时候编译已经跑起来了。  我的编译了八九个小时才过的。

建议性能不好的电脑就不要用 -j4选项了。  我虽然分配了4G给虚拟机,也设置了4核。但是我还是用make。

这样更稳妥一点。

最后编译成功能看到下图。

RK3288 源码编译Android 7.1.2 及其常见错误解决方法_第6张图片

看到successflly绿色的,就happy了。

 

欢迎大家批评指正。可以加QQ:727169295,一起交流学习~~~   

谢谢~~

 

 

 

 

你可能感兴趣的:(RK3288)