手中有一塊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