主题 : 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: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2012-03-21 11:44
up up
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
贡献值: 27 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
2楼  发表于: 2012-03-21 13:14
Good
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
级别: 新手上路
UID: 65542
精华: 0
发帖: 8
金钱: 40 两
威望: 8 点
贡献值: 0 点
综合积分: 16 分
注册时间: 2012-03-19
最后登录: 2017-09-13
3楼  发表于: 2012-03-22 01:59
太晚了 明天试试 楼主威武
级别: 新手上路
UID: 65757
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
贡献值: 0 点
综合积分: 2 分
注册时间: 2012-03-22
最后登录: 2012-03-22
4楼  发表于: 2012-03-22 13:29
楼主,几个问题求解答:
1,默认使用内核路径
prebuilt/android-arm/kernel/kernel-qwmu
这个是为了做什么,相关指令是什么.
2,模拟器加载时./out/host/linux-x86/bin/emulator提示没有指定SDK,
3, 你编译之后的system.img/ramdisk.img/userdata.img怎么打包成yaffs.
级别: 新手上路
UID: 56405
精华: 0
发帖: 48
金钱: 245 两
威望: 49 点
贡献值: 0 点
综合积分: 96 分
注册时间: 2011-10-06
最后登录: 2013-11-11
5楼  发表于: 2012-03-29 14:44
同楼上的一样,也在 自行移植自己下载的版本到开发板上;
级别: 侠客
UID: 19993
精华: 0
发帖: 133
金钱: 670 两
威望: 134 点
贡献值: 0 点
综合积分: 266 分
注册时间: 2010-04-26
最后登录: 2023-10-20
6楼  发表于: 2012-06-01 10:11

 回 楼主(carlin) 的帖子

楼主,按你的步骤在第五步出现问题。repo sync

... A new repo command ( 1.16) is available.
... You should upgrade soon:

    cp /root/workspace/.repo/repo/repo /bin/repo

Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 530, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 483, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/root/workspace/.repo/repo/subcmds/sync.py", line 200, in _FetchHelper
    clone_bundle=not opt.no_clone_bundle)
  File "/root/workspace/.repo/repo/project.py", line 968, in Sync_NetworkHalf
    and self._ApplyCloneBundle(initial=is_new, quiet=quiet):
  File "/root/workspace/.repo/repo/project.py", line 1523, in _ApplyCloneBundle
    exist_dst = self._FetchBundle(bundle_url, bundle_tmp, bundle_dst, quiet)
  File "/root/workspace/.repo/repo/project.py", line 1587, in _FetchBundle
    raise DownloadError('%s: %s ' % (req.get_host(), str(e)))
DownloadError: android.googlesource.com: <urlopen error [Errno 110] Connection timed out>

Exception in thread Thread-2:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 530, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 483, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/root/workspace/.repo/repo/subcmds/sync.py", line 200, in _FetchHelper
    clone_bundle=not opt.no_clone_bundle)
  File "/root/workspace/.repo/repo/project.py", line 968, in Sync_NetworkHalf
    and self._ApplyCloneBundle(initial=is_new, quiet=quiet):
  File "/root/workspace/.repo/repo/project.py", line 1523, in _ApplyCloneBundle
    exist_dst = self._FetchBundle(bundle_url, bundle_tmp, bundle_dst, quiet)
  File "/root/workspace/.repo/repo/project.py", line 1587, in _FetchBundle
    raise DownloadError('%s: %s ' % (req.get_host(), str(e)))
DownloadError: android.googlesource.com: <urlopen error [Errno 110] Connection timed out>

Exception in thread Thread-3:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 530, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 483, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/root/workspace/.repo/repo/subcmds/sync.py", line 200, in _FetchHelper
    clone_bundle=not opt.no_clone_bundle)
  File "/root/workspace/.repo/repo/project.py", line 968, in Sync_NetworkHalf
    and self._ApplyCloneBundle(initial=is_new, quiet=quiet):
  File "/root/workspace/.repo/repo/project.py", line 1523, in _ApplyCloneBundle
    exist_dst = self._FetchBundle(bundle_url, bundle_tmp, bundle_dst, quiet)
  File "/root/workspace/.repo/repo/project.py", line 1587, in _FetchBundle
    raise DownloadError('%s: %s ' % (req.get_host(), str(e)))
DownloadError: android.googlesource.com: <urlopen error [Errno 110] Connection timed out>

Exception in thread Thread-4:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 530, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 483, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/root/workspace/.repo/repo/subcmds/sync.py", line 200, in _FetchHelper
    clone_bundle=not opt.no_clone_bundle)
  File "/root/workspace/.repo/repo/project.py", line 968, in Sync_NetworkHalf
    and self._ApplyCloneBundle(initial=is_new, quiet=quiet):
  File "/root/workspace/.repo/repo/project.py", line 1523, in _ApplyCloneBundle
    exist_dst = self._FetchBundle(bundle_url, bundle_tmp, bundle_dst, quiet)
  File "/root/workspace/.repo/repo/project.py", line 1587, in _FetchBundle
    raise DownloadError('%s: %s ' % (req.get_host(), str(e)))
DownloadError: android.googlesource.com: <urlopen error [Errno 110] Connection timed out>

Exception in thread Thread-5:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 530, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 483, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/root/workspace/.repo/repo/subcmds/sync.py", line 200, in _FetchHelper
    clone_bundle=not opt.no_clone_bundle)
  File "/root/workspace/.repo/repo/project.py", line 968, in Sync_NetworkHalf
    and self._ApplyCloneBundle(initial=is_new, quiet=quiet):
  File "/root/workspace/.repo/repo/project.py", line 1523, in _ApplyCloneBundle
    exist_dst = self._FetchBundle(bundle_url, bundle_tmp, bundle_dst, quiet)
  File "/root/workspace/.repo/repo/project.py", line 1587, in _FetchBundle
    raise DownloadError('%s: %s ' % (req.get_host(), str(e)))
DownloadError: android.googlesource.com: <urlopen error [Errno 110] Connection timed out>


error: Exited sync due to fetch errors

是咋回事阿?