一直在寻思着怎么移植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!
则表明配置成功!
如不能通过编译,可通过重新启动系统试试