由于好奇,所以想练下手。计划从官方下载android2.3.4源码,移植到tiny6410.哈哈,反正有友善的代码参考。我相信一定能成功!
环境:ubuntu10.10 32位
一.在ubuntu从官方下载android2.3.4R1源码,官方网站有配置和下载介绍
http://source.android.com/source/downloading.html下载成功。
复制代码- 下载源码步骤
- 1.
- $ mkdir ~/bin
- $ PATH=~/bin:$PATH
- 2.
- $ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
- $ chmod a+x ~/bin/repo
- 3.
- $ mkdir WORKING_DIRECTORY
- $ cd WORKING_DIRECTORY
- 4.
- $ repo init -u https://android.googlesource.com/platform/manifest -b android-2.3.4_r1
- 5.
- $ repo sync
- 如果中间有停下,就继续执行第5步repo sync,就会继续下载。
|
二.编译android2.3.4R1,由于默认的是用64位系统编译,我的是32系统,所以遇到一些麻烦,没事。百度一下,再对比下友善的代码,改了5个文件,很简单。
继续make,成功!已经生成system.img 等三个文件
复制代码- 编译步骤进到android源码的根目录执行make命令,如果是32位系统编译会出错。因为官方的android源码默认要求用64位系统编译,解决方法如下
|
复制代码- ----------------------------64位改32位编译方法-----------------------------------
- 因为Android2.3默认是64位的系统上编译,需要手动修改build/core/main.mk,把这个判断部分注释掉:
- #ifneq (64,$(findstring 64,$(build_arch)))
- #$(warning ************************************************************)
- #$(warning You are attempting to build on a 32-bit system.)
- #$(warning Only 64-bit build environments are supported beyond froyo/2.2.)
- #$(warning ************************************************************)
- #$(error stop)
- #endif
- (二)
- 重新make,如果是安装了JDK6版本,会又报错:
- Docs droiddoc: out/target/common/docs/api-stubs
- Could not load ‘clearsilver-jni’
- java.library.path = out/host/linux-x86/lib
- make: *** [out/target/common/docs/api-stubs-timestamp] Error 45
- make: *** Waiting for unfinished jobs….
- Could not load ‘clearsilver-jni’
- java.library.path = out/host/linux-x86/lib
- make: *** [out/target/common/docs/doc-comment-check-timestamp] Error 45
- 这是由于clearsilver在编译时如果检测到使用Java JDK 6,就使用64位编译,因为Google的一个员工更新了几个文件。这里可以看到详细的修改记录:[url]http://android.git.kernel.org/?p=platform/external/clearsilver.git;a=commitdiff;h=d36910a8110d8377b22301274d2b5131a732a72b[/url]
- 修改这几个文件,该回到32位编译环境即可:
- external/clearsilver/cgi/Android.mk
- external/clearsilver/java-jni/Android.mk
- external/clearsilver/util/Android.mk
- external/clearsilver/cs/Android.mk
- 把编译选项-m64改成-m32即可
- -------------------------------------------------------------------------------------------
|
三.模拟器加载自己编译的系统运行,也成功。
复制代码- 默认使用内核路径
- prebuilt/android-arm/kernel/kernel-qwmu
- 模拟器运行之前配置ANDROID_PRODUCT_OUT环境变量
- $ declare -x ANDROID_PRODUCT_OUT="{Android根目录}/out/target/product/generic"
- 在android 源码根目录执行命令:
- $./out/host/linux-x86/bin/emulator
- 这样模拟器就跑起来了
|
四.在学习制作android文件系统,在研究友善的脚本中。。。
五.让自己的制作的文件系统在tiny6410中跑起来。
[ 此帖被carlin在2012-03-21 10:40重新编辑 ]