手中有一块FriendlyArm的mini2440的开发板,最初看到Android被人移植到2440还是一年多以前,那时候FriendlyARM提供安装镜像,但只支持128MFlash和专门的触摸屏(不是NEC的)。这一年多,伴随Android的迅猛发展,android也被各种大牛移植到mini2440上,虽然Flash只有64M,照样可以运行。到现在为止可以在网上搜到可移植的最高版本为Android2.1。
想深入学习一下Linux,因此就想按网上的教程,下载一下android的源码,编译后烧入mini2440中。忙活了一个星期了,依然停留在下载源码的阶段,很是郁闷。
由于Android原生不支持ArmV4指令集,也就是Arm9是不支持的,Arm11可以支持(如今FriendlyArm的6410开发板就是Arm11的开发板,已经将Android与WinCE和Linux移植到上面,课件Android的火爆)。所以下载源码的时候需要从freerunner上下载一些。可能是网络或者源码服务器的服务不好,总是会断,速度也是很慢,有时挂了一晚上就下来300多M,再加上有可能会断或死机,下载源码真是不容易。
到现在为止,我大概对于下载的过程有了一定了解,对于下载过程中出现的问题也有了一些自己的解决方法,起码知道文件下载的状态了。
关于git和repo的安装就不写了,可以看参考资料里的网页链接。
下面说一下下载源码时遇到的几个问题,虽然还没有完全下载完,但感觉对于下载的流程和状态还是有了深入的了解。首先manifest.xml应该类似一个指引文件,他提供许多源码工程的路径,在进行repo sync时,就会从对应的路径进行下载,我从Arm9.net上获得的manifest.xml的projects数为145(用xml工具可以看到);其次在执行repo sync过程中,Fetching Projects:1% (2/145),145就是总共的工程数,2为已下载的文件数,而当因为网络原因导致断开连接重新sync时,会继续Fetching Projects,也就是会继续接上一次下载,如在Fetching Projects :24%(35/145)后会继续下载;前面提到的2或35能与manifest.xml 的响应工程编号对应。
解决经常出现网络中断必须重新输入repo sync的情况:在命令行中输入$?=1; while [ $? -ne 0 ] ; do repo sync ; done。(注意:while后面必须有空格,参考资料4),之后我这里输出0=1:command not found不太清楚是什么原因,但当发生网络中断时,会自动运行sync。
PS:源码还在下载过程中,god bless me。下载源码只是万里长征的第一步,修改根文件系统、编译源码和最终烧写才是关键。网上的资料也是千篇一律,没有完整的解决方案(也可能我要求太高,要所谓的傻瓜教程)。我接触Linux的时间也比较短,接下来任重道远。希望能成功,成功后一定写终极教程。加油。
参考资料:
1、Git的安装和repo的使用(android原生代码的下载):http://www.williamhua.com/2009/04/29/git-and-repo-for-dummies/
(存在一个问题就是缺少repo sync);
2、Arm9.net网友的文章:android移植到mini2440 http://www.arm9home.net/read.php?tid-5600.html
3、repo的用法:http://blog.csdn.net/free2o/archive/2009/03/11/3981588.aspx
4、命令行中 while和for的使用:http://codingstandards.javaeye.com/blog/780524