当前位置:操作系统 > 安卓/Android >>

Android准备往OpenWrt上移植

 

Android准备往OpenWrt上移植

这两天全力编译android,cpu 4个线程全开,磁盘大吞吐的存取,导致温度过高,编译中间笔记本保护性质的自动休眠关机。
不说废话,进入正题。


友善的mini6410自带的是android-2.3.4,而tiny210自带android-2.3.1(以及Android-4.0.3),我想把他们统一到android-2.3.7_r1,然后放到OpenWrt框架下。
之前nbd维护的android-1.6 for OpenWrt早就因为google android服务器的更换而不能够正常运行了。而nbd现在维护的是android 4.0,但是据他自己说只有dalvik可能能够运行,但是我没有编译成功。

总之,在openwrt下的qpe已经完成的情况下,我想把android拉到openwrt下。


目前进展:
[cpp] 
ok      0 安装beyond compare,或使用diff脚本,测试、对比,得到files-patches; 
ok      1 编译tiny210自带的android-2.3.1源代码; 
ok      2 编译原始android-2.3.1的goldfish; 
ok      3 编译原始android-2.3.1 + tiny210的files-patches补丁; 
        4 精简2.3.1补丁,去除不需要的补丁,再往2.3.7上移植; 
        5 分析android和nbd的源代码,把2.3.7移植到openwrt框架上; 


升级路线:
[cpp] 
|-------------------------------------------------------- 
|  (低原始) --\                                          
|              =>得到  (低差异) --\                      
|  (低已好) --/                   =>结合 得到  (高版本)   
|                     (高原始) --/                       
|-------------------------------------------------------- 
原则只添不减(除非不可共存,相冲突)! 

android的移植按如下流程:
1 android linux内核的普通驱动移植,让内核可以在目标平台上运行起来。
2 正确挂载文件系统:确保内核启动参数,和android源代码system/core/rootdir目录下的init.rc中的文件系统挂载正确。
3 调试控制台,让内核启动参数中的console参数,和android源代码system/core/init/init.c中的console_name设置和硬件保持一致。
4 打开android相关的驱动(logger,binder等),串口输入logcat看logger驱动起来,没有的话调试logger驱动。

Android源代码结构分析:
[cpp]
---------------- 
├── Makefile            全局的Makefile 
├── build               系统编译规则和配置所需要的脚本和工具 
---------------- 
├── prebuilt        各种平台编译工具链 
├── bionic              基础C库源代码 
---------------- 
├── frameworks *        Android应用程序的核心框架层(java及C++语言) 
├── system     *        底层文件系统/库/应用及组件(C语言) 
├── dalvik              JAVA虚拟机 
├── external            android使用的一些额外开源库 
├── libcore             与媒体播放框架代码相关 
---------------- 
├── packages            各种应用程序实例 
├── development         程序开发所需要的实例/模板/工具 
---------------- 
├── ndk 
├── sdk 
├── cts                 Android CTS兼容性规范测试用例 
---------------- 
├── vendor     *        厂商定制代码 
├── device     *        厂商定制代码 
├── hardware   *        一些与硬件相关的库,部分厂家开源的硬解适配层HAL代码 
├── kernel     *        Linux源代码 
├── bootable            引导加载器 
├── recovery            与目标的恢复功能相关 
---------------- 


Android移植主次顺序:
[cpp]
---------------- 
├── kernel     *        (自带,完成)     Linux源代码 
---------------- 
├── build               (1稍变化)(针对64 JDK)    (变化要改)  系统编译规则和配置所需要的脚本和工具 
---------------- 
├── vendor     *        (2最主要)(完成,相同)   (变化要改)  厂商定制代码 
├── device     *        (2最主要)(完成,相同)   (变化要改)  厂商定制代码 
├──+frameworks *x       (2最主要)(完成,不同,未改动docs,core/tests)    (变化要改)  和硬件有关的核心框架中C/C++语言要根据情况修改 
---------------- 
├── system     *        (3主要)(完成,相同)    (变化要改)  底层文件系统/库/应用及组件(C语言) 
├── hardware   *        (3主要)(完成,相同)    (变化要改)  一些与硬件相关的库,部分厂家开源的硬解适配层HAL代码 
├── external    x       (3主要)(完成,只添加libusb未删除tcpdump)   (变化要改)  依赖的额外开源库 
├── libcore     x       (3次要)(变化,但未改,不同)    (变化可不改) 与媒体播放框架代码相关 
---------------- 
├── packages            (4次要)(完成,相同)    (变化要改)  各种应用程序实例 
├──+frameworks  x       (4次要)和图像界面有关的java程序根据需要修改 
---------------- 
├── development         (4次要,变化)(完成,相同) (变化可不改) 程序开发所需要的实例/模板/工具 
├── cts                 (0变化,不改)    Android CTS兼容性规范测试用例 
├── ndk                 (0变化,不改) 
├── prebuilt   &nbs

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,