一直在尋思着怎麼移植Android到我的2440開發板上,自從找工作,就一直把這事給耽擱了,現在找到工作了,也沒什麼時間,但是還是要抽出時間來完成這個任務。
今天開始了,要移植首先的有源碼供你編譯,供你移植啊。所以,我們這裏的第一步就是獲得源碼。
到網上找了很多資料,稍微讓自己有點思路。應該有兩種吧~~(這裏暫且這樣說,還不確定):
(1):移植android內核+移植android文件系統
(2):
一、獲得源碼
在網上找了很久,看到的資料都是一樣的,都是以Ubuntu爲版本的一個參考。而我的是RedHat的,所以的自己弄了。
1、Git的安裝
下載git源碼。登陸git官網(http://git-scm.com/),可以下載到最新的git源碼,
下載後按着RedHat Linux的一般軟件的安裝方法:
./configure
make
make install
就可以了。
注意:在repo整個android源碼時有可能會出錯,如下:
Traceback (most recent call last):
File "/home/zhutou/.repo/repo/main.py", line 235, in <module>
_Main(sys.argv[1:])
File "/home/zhutou/.repo/repo/main.py", line 217, in _Main
repo._Run(argv)
File "/home/zhutou/.repo/repo/main.py", line 123, in _Run
cmd.Execute(copts, cargs)
File "/home/zhutou/.repo/repo/subcmds/init.py", line 219, in Execute
self._SyncManifest(opt)
File "/home/zhutou/.repo/repo/subcmds/init.py", line 110, in _SyncManifest
m.PreSync()
File "/home/zhutou/.repo/repo/project.py", line 1456, in PreSync
cb = self.CurrentBranch
File "/home/zhutou/.repo/repo/project.py", line 271, in CurrentBranch
b = self.work_git.GetHead()
File "/home/zhutou/.repo/repo/project.py", line 1242, in GetHead
fd = open(path, 'rb')
IOError: [Errno 2] No such file or directory: '/home/zhutou/.repo/manifests/.git/HEAD'
這個可能有三個原因,
(1):沒有安裝git,只是安裝了repo
(2):可能由於先用git下載了,而後又用repo來下載
(3):應該是之前舊的repo sync導致的,
解決方法是使用命令
repo prune
我用以上的解決方法,沒有成功,用下面的方法成功解決了:
方法一:我是直接換了一個目錄,重新用repo init -u git://android.git.kernel.org/platform/manifest.git來重新初始化的。
方法二:
$ touch ~/.gitconfig
$ rm -rf .repo
二、android的編譯
在同步好android的源碼後,開始編譯,看到網上的資料都是直接make,並沒有指定目標平臺(arch),跟交叉編譯器(cross_compile),我想這樣應該是編譯的是針對x86的,所以可以用模擬器來檢測我們編譯好的android。
(1) 現在開始make,出現以下錯誤,有錯誤沒關係,可以上百度哦~~呵呵~~
Checking build tools versions...
build/core/main.mk:76: ************************************************************
build/core/main.mk:77: You are attempting to build on a 32-bit system.
build/core/main.mk:78: Only 64-bit build environments are supported beyond froyo/2.2.
build/core/main.mk:79: ************************************************************
build/core/main.mk:80: *** stop。 停止。
這是因爲froyo/2.2默認只支持64-bit,
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: java version "1.4.2".
The correct version is: 1.6.
Please follow the machine setup instructions at
http://source.android.com/source/download.html
************************************************************
看來是我的Java版本太低了哦~~所以要安裝1.6的版本哦~~
# mkdir /usr/java
<2>安裝JDK
# cd /usr/java
①jdk-6u23-linux-i586-rpm.bin 文件安裝
# chmod 777 jdk-6u23-linux-i586-rpm.bin ← 修改爲可執行
# ./jdk-6u23-linux-i586-rpm.bin ← 選擇yes同意上面的協議
# rpm -ivh jdk-6u23-linux-i586-rpm.bin ← 選擇yes直到安裝完畢
②jdk-6u23-linux-i586.bin 文件安裝
# chmod a+x jdk-6u23-linux-i586.bin ← 使當前用戶擁有執行權限
# ./jdk-6u23-linux-i586.bin ← 選擇yes直到安裝完畢
--------------------------------------------------------------------------
<1># vi /etc/profile
<2>在最後加入以下幾行:
export JAVA_HOME=/usr/java/jdk1.6.0_23
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
<3># reboot ← 重啓機器配置生效
測試是否配置成功
新建Test.java
在終端用cd命令進入Test.java目錄,然後輸入
javac Test.java
java Test
若輸出
Hello,Welcome to Linux World!
則表明配置成功!
如不能通過編譯,可通過重新啓動系統試試