raspberryPi2 移植Android系统
2017-08-24 09:11
495 查看
原文:http://www.elicec.com/2017/01/raspberry_pi2_port_android/
raspberryPi2 移植Android系统
Androidelicec 8个月前
(01-08) 3494次浏览 已收录
0个评论
raspberryPi2 移植Android系统
从本文你学到的东西
如何下载Android源码
如何编译Android源码
如何在Linux下分区
如何将Android镜像移植到raspberrypi
步骤概览
下载raspberry2的Linux内核和Android源码编译raspberry2的Linux内核生成
zImage内核镜像
编译Android系统,生成
system.img系统镜像和
ramdisk.img镜像
对SD卡分区
将编译好的镜像文件写入分好区的SD卡
下载Linux内核和Android源码
Android版本:Marshmallow(android 6.0.1)编译平台:Ubuntu 14.04 64bit (下载加编译至少准备100G硬盘空间)
下载Android源码
下载Android源码可以参考官方网站http://source.android.com/source/downloading.html。
但是考虑到国内无法访问Google,以下采用国内tuna清华镜像下载。 步骤如下:
1.下载repo工具
chmod a+x ~/bin/repo
//其中bin目录建立在当前用户文件夹下即可。
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
2.建立工作目录:
//工作目录为Android源代码下载保存的位置。名称任意。
mkdir WORKING_DIRECTORY cd WORKING_DIRECTORY
3.初始化仓库:
首先得编辑~/bin/repo文件修改
REPO_URL变量,操作如下:
//打开刚才下载的repo文件,也可以用gedit或者vim等任何文本编辑器打开
nano ~/bin/repo
//找到REPO_URL,并修改为
REPO_URL = 'https://gerrit-google.tuna.tsinghua.edu.cn/git-repo'
在工作目录初始化仓库
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.1_r10
//或
repo init -u git://aosp.tuna.tsinghua.edu.cn/aosp/platform/manifest -b android-6.0.1_r10// 如果需要特定的Android包可以修改后面的-b android-6.0.1_r10
下载raspberrypi2用的manifests文件到repo。这样可以repo到树莓派相关的硬件文件
$ cd .repo // .repo位于刚才下载repo的bin目录
$ git clone https://github.com/peyo-hd/local_manifests -b marshmallow
4. 最后就可以下载源码了
在你刚才新建的工作目录执行
repo sync, 下载过程很长,可能需要好几天,当下载中途出错,可以执行
repo sync,便可以自动继续下载
编译Linux内核
交叉编译环境的搭建
下载交叉编译在raspberrypi的github官方主页的tools仓库有交叉编译环境,地址如下 https://github.com/raspberrypi/tools/tree/master/arm-bcm2708
该目录中有总共有四个编译环境,根据不同的编译平台,我选用的是
gcc-linaro-arm-linux-gnueabihf-raspbian下载到Ubuntu任意目录。
设置其环境变量
gedit /etc/profile //打开profile文件
最末尾添加
PATH="$PATH:/home/van/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin" export PATH
执行
source /etc/profile使之立即生效
编译Linux内核
$ cd kernel/rpi //内核下载的目录位于建立的下载Android的工作目录 $ ARCH=arm scripts/kconfig/merge_config.sh arch/arm/configs/bcm2709_defconfig android/configs/android-base.cfg android/configs/android-recommended.cfg $ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make zImage $ ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make dtbs
编译Android系统
在开始编译Android系统之前,需要先修改framework中的一个可能导致的bug,文件
GestureDetector.java在490行onTouchEvent中添加如下switch几句话:
core/java/android/view/GestureDetector.java @@ line 490 @@ public class GestureDetector { public boolean onTouchEvent(MotionEvent ev) { + switch(ev.getAction() & MotionEvent.ACTION_MASK) { + case MotionEvent.ACTION_HOVER_MOVE: +case MotionEvent.ACTION_HOVER_ENTER: + case MotionEvent.ACTION_HOVER_EXIT: + case MotionEvent.ACTION_BUTTON_PRESS: + case MotionEvent.ACTION_BUTTON_RELEASE: + case MotionEvent.ACTION_SCROLL: + return false; + } if (mInputEventConsistencyVerifier != null) {
接着,可以开始编译Android系统了,切换到Android源码目录
$ source build/envsetup.sh $ lunch rpi2-eng //也可以直接执行lunch不带参数,那样会弹出所有的target供选择 $ make -j4 //4代表同时编译的线程数目,例如双核四线程电脑就 j4
编译时间根据cpu性能而不同,一般4小时左完成。
向SD卡写入内核和系统
如何将编译好的系统写入sd卡可以参考我在YouTube上找到一个视频,非常详细~包括如何分区,如何写入镜像等等 http://v.youku.com/vshow/idXMTQ2MzY2MzA1Ng==.html下面是简短的文字描述攻参考
SD卡分区
分区工具,Ubuntu自带的Gparted总共分四个区
分区 | 大小 | 格式 | label | flags |
---|---|---|---|---|
p1 | 512M | Fat32 | boot | *boot |
p2 | 537M | ext4 | system | |
p3 | 512M | ext4 | cache | |
p4 | 剩余全部 | ext4 | data |
写入Android镜像
$ cd out/target/product/rpi2$ sudo dd if=system.img of=/dev/<p2> bs=1M
//p2代表分区二在系统中挂载的名字,例如我的挂载为sdb2,外接usb存储设备都挂载在/dev/sd*下,具体名字可以在GParted中看到
上一步中Android系统编译完成后会在
out/target/product/rpi2中生成
system.img镜像文件。dd命令将其写入
P2分区
接着将所需的其他文件直接拷贝到
p1分区即boot目录(直接拷贝),总共8个:
device/brcm/rpi2/boot/*下的所有文件:`bootcode.bin,cmdline.txt,config.txt,fixup.dat,start.elf` kernel/rpi/arch/arm/boot/zImage kernel/rpi/arch/arm/boot/dts/bcm2709-rpi-2-b.dtb out/target/product/rpi2/ramdisk.img
复制完成后就可以给raspberry上电,启动了。
可能遇到的问题
问题:用HDMI口连接显示器是,显示器提示分辨率无法匹配。或者黑屏。 解决:在config.txt中加 hdmiignoreedid=0xa5000080。这样可以不用理会显示器具体,配置,而是强制输出到显示器。elicec , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明raspberryPi2
移植Android系统!
喜欢
(5)赏分享
(0)
相关文章推荐
- Android4.1.1_r1系统移植------TP移植篇
- android系统移植要点之一--以6410为例
- Android系统移植(二)-按键移植
- 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统
- TP----Android系统移植之按键驱动篇
- 深入浅出 - Android系统移植与平台开发(七)- 初识HAL
- Android系统的移植要做的两个工作
- android系统开发(五)-tslib移植
- 深入浅出 - Android系统移植与平台开发(十二) - Sensor HAL框架分析之二
- Android系统移植与调试之------->build.prop生成过程分析
- Android系统移植
- android系统移植emmc记录(5)-- fastboot命令分析
- Android系统移植(一)
- Android震动系统结构 移植与调试的要点
- Android系统移植(六)
- 高通MSM8255 GPS 调试分析&&Android系统之Broadcom GPS 移植
- 转supermanwg的 mpeg4ip的Mp4v2库移植到android系统上,实现h264封装到mp4的容器内
- Android系统移植与调试之------->如何修改Android的默认语言、默认时区
- 深入浅出 - Android系统移植与平台开发(十二) - Sensor HAL框架分析之二
- 在ubuntu系统下cocos2dx移植到android平台