拿到RK3288板子后。上一下靓照。正面
背面
然后我们去官网下载源码。
连接:https://tinkerboarding.co.uk/wiki/index.php/Software
压缩档案大概有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
当出现:
出现这些信息的时候,说明上面安装的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.
解决办法:
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的时候又遇到问题:
然后我们需要找到这两个文件,这两个文件的目录是:
.jack-settings
config.properties
这个时候请参考:https://cloud.tencent.com/developer/article/1414273
这篇文章主要介绍我们编译不过的时候,如何配置和修改port和admin。注意一定要对上号。
大家要注意这两个文件的权限。都是rw00.
到这里重启jack-server就可以了。
然后接着compile.
跑着跑着又来问题了。
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。
我的电脑基本都出现这样了,
然后有时候会CPU跑到30-40%这个时候编译已经跑起来了。 我的编译了八九个小时才过的。
建议性能不好的电脑就不要用 -j4选项了。 我虽然分配了4G给虚拟机,也设置了4核。但是我还是用make。
这样更稳妥一点。
最后编译成功能看到下图。
看到successflly绿色的,就happy了。
欢迎大家批评指正。可以加QQ:727169295,一起交流学习~~~
谢谢~~