树莓派3 Android Pie 编译适配

树莓派3 Android Pie 编译适配

  • 1准备工作
  • 2.下载源代码以及配置依赖项
    • 2.1 配置Git与Repo
    • 2.2 下载源代码
    • 2.3 配置依赖项
  • 3. 编译
    • 3.1 编译内核
    • 3.2 打补丁
    • 3.3 编译
  • 4 制作启动盘
    • 4.1 tf卡分区
    • 4.2 各分区格式化
    • 4.3 写入系统镜像
    • 4.4 写入boot
  • 5 开机上电
    • 5.1 安装adb工具
  • 完结

1准备工作

Raspberry 3(老版本),github上反馈,3B+版本会黑屏。
宿主机,ubuntu16.04LST
本文参考github大神peyo-hd的wiki,祭出链接 android-rpi,大家可以自行查阅。

2.下载源代码以及配置依赖项

2.1 配置Git与Repo

2.2 下载源代码

 $ repo init -u https://android.googlesource.com/platform/manifest -b android-9.0.0_r45
 $ git clone https://github.com/android-rpi/local_manifests .repo/local_manifests -b pie
 $ repo sync

由于不可描述的原因,repo sync的速度会特别缓慢。对于android原生代码ASOP的下载,可以通过更改中科大镜像源的方法提速。对于github中kernel/rpi下载速度缓慢甚至超时中断,需要更改ssh配置,甚至挂小飞机(亲测挂小飞机也没有改观)。百度有大佬用gitee作中继,但亲测未成功,具体需要自行摸索。

2.3 配置依赖项

参考TPrime.A在Ubuntu下配置的依赖项,并做了一点修改。

$ sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev
$ sudo apt-get install libx11-dev libreadline6-dev libgl1-mesa-dev g++-multilib 
$ sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev
$ sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
$ sudo apt-get install git-core gnupg flex bison gperf build-essential  
$ sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib 
$ sudo apt-get install libc6-dev
$ sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev 
$ sudo apt-get install lib32z-dev ccache
$ sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
$ sudo apt-get install python-mako

重点:JDK配置,由于JDK闭源,下载需要官网注册,十分繁琐。google官网给出的教程推荐使用openJDK,使用apt 安装即可,安装完成后配置环境变量。

3. 编译

3.1 编译内核

安装交叉编译工具,否则报找不到arm-linux-gnueabihf-gcc错。

$ sudo apt-get install gcc-arm-linux-gnueabihf

拼接config,此步骤依赖bision。若执行不成功,apt安装bision即可。

 $ cd kernel/rpi
 $ ARCH=arm scripts/kconfig/merge_config.sh arch/arm/configs/bcm2709_defconfig kernel/configs/android-base.config kernel/configs/android-recommended.config

编译zImage

 $ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make zImage

出现以下结果,编译成功。
zImage 编译成功
编译设备树

 $ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make dtbs

3.2 打补丁

补丁链接:https://github.com/android-rpi/device_brcm_rpi3/wiki/Pie-:-patch-framework-source
然而链接所示的patch不是标准格式,并且行号与现在的代码已经不对应,保存patch文件用patch命令运行报错,说我patch输入里面只有辣鸡…人工大法好,直接cd到源文件改,保存。
patch格式错误

3.3 编译

终于到了激动人心的编译环节了。
首先加载编译工具,配置编译选项。此处依赖JDK,若JDK版本未满足要求,会报错,按要求更改JDK版本即可。

 $ source build/envsetup.sh
 $ lunch rpi3-eng

树莓派3 Android Pie 编译适配_第1张图片
编译系统镜像,此处可以根据个人电脑配置,选择合适的编译线程。默认-j4,适用于双核四线程。若八核十六线程的专业编译服务器,可选择-j16。

make ramdisk systemimage

等待编译中。。。
+++++++++++++++++更新分界线20191104++++++
编译一定要记得给磁盘预留足够空间,建议100GB,编译完成后会在out文件夹下看到.img的镜像文件。编译成功。

4 制作启动盘

4.1 tf卡分区

使用fdisk分区工具,首先插入tf卡,运行查询命令

sudo fdisk -l

查询到tf卡设备号:/dev/sdd
在这里插入图片描述
运行fdisk命令,格式化各分区。

  1. 首先d命令删除所有分区,n命令新建分区256M,t命令更改分区类型 W95 FAT32(LBA) ,a设置成bootable。
    树莓派3 Android Pie 编译适配_第2张图片
    树莓派3 Android Pie 编译适配_第3张图片
    树莓派3 Android Pie 编译适配_第4张图片
  2. n命令新建第二个分区
    树莓派3 Android Pie 编译适配_第5张图片
  3. n命令新建第三个分区,w命令保存
    树莓派3 Android Pie 编译适配_第6张图片

4.2 各分区格式化

此处建议把sd卡弹出,再重新插入一次。否侧格式化容易不成功。

sudo mkfs.vfat -n boot /dev/sdd1
sudo mkfs.ext4 -L userdata /dev/sdd3

4.3 写入系统镜像

这里注意要改自己的第二个分区名。(用作/system)

  $ cd out/target/product/rpi3
  $ sudo dd if=system.img of=/dev/sdd2 bs=1M

在这里插入图片描述

4.4 写入boot

挂载boot分区:

sudo mkdir /media/test
sudo mount -t fat /dev/sdd1 /media/test

复制boot分区文件

  sudo cp device/brcm/rpi3/boot/*  /media/test/
  sudo cp kernel/rpi/arch/arm/boot/zImage  /media/test/
  sudo cp kernel/rpi/arch/arm/boot/dts/bcm2710-rpi-3-b.dtb  /media/test/
  sudo mkdir /media/test/overlays
  sudo cp kernel/rpi/arch/arm/boot/dts/overlays/vc4-kms-v3d.dtbo  /media/test/overlays/vc4-kms-v3d.dtbo
  sudo cp out/target/product/rpi3/ramdisk.img /media/test/

5 开机上电

见证奇迹的时刻
树莓派3 Android Pie 编译适配_第7张图片
屏幕logo出现,然鹅…
树莓派3 Android Pie 编译适配_第8张图片
折腾了这么几天,你就给我看这个????应用只有system tracing和settings???编译路径下安装的那么多应用嘞???鼠标箭头虚影,键盘无响应

5.1 安装adb工具

自行安装adb工具,完成后,发现USB方式并不能连接上。那就网络连接也很香

adb connect xxx.xxx.xxx.xxx(ip address)
adb shell

树莓派3 Android Pie 编译适配_第9张图片
查看了一下log,并没有什么组件启动失败,那可能这个系统就是啥都没有,面向命令行吧。

完结

你可能感兴趣的:(树莓派3 Android Pie 编译适配)