主题 : android2.3.4文件系统移植 复制链接 | 浏览器收藏 | 打印
菜鸟在路上
级别: 圣骑士
UID: 42749
精华: 6
发帖: 241
金钱: 1530 两
威望: 306 点
贡献值: 6 点
综合积分: 602 分
注册时间: 2011-04-11
最后登录: 2016-07-19
楼主  发表于: 2012-03-21 10:05

 android2.3.4文件系统移植

由于好奇,所以想练下手。计划从官方下载android2.3.4源码,移植到tiny6410.哈哈,反正有友善的代码参考。我相信一定能成功!

环境:ubuntu10.10 32位

一.在ubuntu从官方下载android2.3.4R1源码,官方网站有配置和下载介绍http://source.android.com/source/downloading.html

下载成功。
复制代码
  1. 下载源码步骤
  2. 1.
  3. $ mkdir ~/bin
  4. $ PATH=~/bin:$PATH
  5. 2.
  6. $ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
  7. $ chmod a+x ~/bin/repo
  8. 3.
  9. $ mkdir WORKING_DIRECTORY
  10. $ cd WORKING_DIRECTORY
  11. 4.
  12. $ repo init -u https://android.googlesource.com/platform/manifest -b android-2.3.4_r1
  13. 5.
  14. $ repo sync
  15. 如果中间有停下,就继续执行第5步repo sync,就会继续下载。


二.编译android2.3.4R1,由于默认的是用64位系统编译,我的是32系统,所以遇到一些麻烦,没事。百度一下,再对比下友善的代码,改了5个文件,很简单。

继续make,成功!已经生成system.img 等三个文件

复制代码
  1. 编译步骤进到android源码的根目录执行make命令,如果是32位系统编译会出错。因为官方的android源码默认要求用64位系统编译,解决方法如下


复制代码
  1. ----------------------------64位改32位编译方法-----------------------------------
  2. 因为Android2.3默认是64位的系统上编译,需要手动修改build/core/main.mk,把这个判断部分注释掉:
  3. #ifneq (64,$(findstring 64,$(build_arch)))
  4. #$(warning ************************************************************)
  5. #$(warning You are attempting to build on a 32-bit system.)
  6. #$(warning Only 64-bit build environments are supported beyond froyo/2.2.)
  7. #$(warning ************************************************************)
  8. #$(error stop)
  9. #endif
  10. (二)
  11. 重新make,如果是安装了JDK6版本,会又报错:
  12. Docs droiddoc: out/target/common/docs/api-stubs
  13. Could not load ‘clearsilver-jni’
  14. java.library.path = out/host/linux-x86/lib
  15. make: *** [out/target/common/docs/api-stubs-timestamp] Error 45
  16. make: *** Waiting for unfinished jobs….
  17. Could not load ‘clearsilver-jni’
  18. java.library.path = out/host/linux-x86/lib
  19. make: *** [out/target/common/docs/doc-comment-check-timestamp] Error 45
  20. 这是由于clearsilver在编译时如果检测到使用Java JDK 6,就使用64位编译,因为Google的一个员工更新了几个文件。这里可以看到详细的修改记录:[url]http://android.git.kernel.org/?p=platform/external/clearsilver.git;a=commitdiff;h=d36910a8110d8377b22301274d2b5131a732a72b[/url]
  21. 修改这几个文件,该回到32位编译环境即可:
  22. external/clearsilver/cgi/Android.mk
  23. external/clearsilver/java-jni/Android.mk
  24. external/clearsilver/util/Android.mk
  25. external/clearsilver/cs/Android.mk
  26. 把编译选项-m64改成-m32即可
  27. -------------------------------------------------------------------------------------------


三.模拟器加载自己编译的系统运行,也成功。

复制代码
  1. 默认使用内核路径
  2. prebuilt/android-arm/kernel/kernel-qwmu
  3. 模拟器运行之前配置ANDROID_PRODUCT_OUT环境变量
  4. $ declare -x ANDROID_PRODUCT_OUT="{Android根目录}/out/target/product/generic"
  5. 在android 源码根目录执行命令:
  6. $./out/host/linux-x86/bin/emulator
  7. 这样模拟器就跑起来了


四.在学习制作android文件系统,在研究友善的脚本中。。。

五.让自己的制作的文件系统在tiny6410中跑起来。
[ 此帖被carlin在2012-03-21 10:40重新编辑 ]
级别: 新手上路
UID: 65542
精华: 0
发帖: 8
金钱: 40 两
威望: 8 点
贡献值: 0 点
综合积分: 16 分
注册时间: 2012-03-19
最后登录: 2017-09-13
1楼  发表于: 2012-03-22 01:59
太晚了 明天试试 楼主威武