在Ubuntu上下载、编译和安装Android最新源代码(包括网友问答)

看完了前面说的几本书之后,对Linux Kernel和Android有一定的认识了,是不是心里蠢蠢欲动,想小试牛刀自己编译一把Android源代码了呢?一直习惯使用Windows系统,而Android源代码是不支持在Windows上编译上,于是决定使用虚拟机安装Ubuntu,然后下载、编译和安装Android源代码。

     一. 环境准备。

     1. 磁盘空间预留20G左右,内存3G,因为一边要跑主机,一边要跑虚拟机,内存要求还是比较高的,这样才会比较流畅。

     2. 安装VMWare 7.1.4。我的操作系统是Win7,VMWare的版本要新一点的,旧版本的VMWare在网络支持上比较差,由于要在虚拟机上下载Android源代码,没有网络是万万不行的。

     3. 安装好VMWare后,接下来就安装Ubuntu系统了。我选择目前最新的版本ubuntu-11.04-alternate-i386,从网上查到的资料说,要编译Android源代码,Ubuntu的最低版本是8.04。下载好后,安装时采用一直默认安装即可。

     4. 安装Git工具。Android源代码采用Git工具来管理,与SVN相比,这是一种分布式的源代码管理工具,而SVN是集中式的源代码管理工具。要安装Git工具,在Ubuntu上执行以下命令即可:

     USER-NAME@MACHINE-NAME:~$ sudo apt-get install git-core gnupg

     5. 安装Java SDK。在Ubuntu上执行以下命令:

     USER-NAME@MACHINE-NAME:~$ 
sudo add-apt-repository ppa:ferramroberto/java
      
USER-NAME@MACHINE-NAME:~$ 
sudo apt-get update
     USER-NAME@MACHINE-NAME:~$ 
sudo apt-get install sun-java6-jre sun-java6-plugin
     USER-NAME@MACHINE-NAME:~$ 
sudo apt-get install sun-java6-jdk
       
     
     6. 依赖的其它包。在Ubuntu上执行以下命令:

      USER-NAME@MACHINE-NAME:~$ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl
     7. 调试工具。在Ubuntu上执行以下命令:

      USER-NAME@MACHINE-NAME:~$ sudo apt-get install valgrind

    二. 下载Android源代码工程。

     1. 下载repo工具。在Ubuntu上执行以下命令:

     USER-NAME@MACHINE-NAME:~$ wget  http://android.git.kernel.org/repo
     USER-NAME@MACHINE-NAME:~$ chmod 777 repo
     USER-NAME@MACHINE-NAME:~$ cp repo /bin/
     2. 下载Android最新版本源代码。在Ubuntu上执行以下命令:

     USER-NAME@MACHINE-NAME:~$ mkdir Android

     USER-NAME@MACHINE-NAME:~$ cd Android
     USER-NAME@MACHINE-NAME:~/Android$ repo init -u git:// android.git.kernel.org/platform/manifest.git
     USER-NAME@MACHINE-NAME:~/Android$ repo sync
     经过漫长的等待(我下载了两三天)后,就可以把Android源代码下载下来了。其间可能还有经历下载中断的情况,这时只要重新执行repo sync就可以了。
     三. 编译Android源代码。
     1. 编译。在Android目录下执行以下命令:
      USER-NAME@MACHINE-NAME:~/Android$ make
     第一次编译要等待比较久的时间,编译成功后,可以看到下面的输出:
     Target system fs image:    out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img
     Install system fs image: out/target/product/generic/system.img
     Target ram disk: out/target/product/generic/ramdisk.img
     Target userdata fs image: out/target/product/generic/userdata.img
     Installed file list: out/target/product/generic/installed-files.txt 
     2. 编译过程中可能会遇到的问题。
      问题一:You are attempting to build on a 32-bit system.
     两个地方需要个修改:
     1)修改build/core目录下的main.mk文件:
      ifeq ($(BUILD_OS),linux)
     build_arch := $(shell uname -m)
      #Change the following line for building on a 32-bit system.
     #ifneq (64,$(findstring 64,$(build_arch)))
     ifneq (i686,$(findstring i686,$(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.)
     2)找到下列文件:
     /external/clearsilver/cgi/Android.mk
     /external/clearsilver/cs/Android.mk
     /external/clearsilver/java-jni/Android.mk
     /external/clearsilver/util/Android.mk
     修改LOCAL_CFLAGS和LOCAL_LDFLAGS变量:
      # This forces a 64-bit build for Java6
     # Change the following two lines for building on a 32-bit system.
     # LOCAL_CFLAGS += -m64
     # LOCAL_LDFLAGS += -m64
     LOCAL_CFLAGS += -m32
     LOCAL_LDFLAGS += -m32
      问题二:Undefined reference to `__dso_handle' 
     external/stlport/src/monetary.cpp:39: undefined reference to `__dso_handle'
out/target/product/vm/obj/SHARED_LIBRARIES/libstlport_intermediates/src/locale.o: In function `__static_initialization_and_destruction_0':
     external/stlport/src/locale.cpp:29: undefined reference to `__dso_handle'
out/target/product/vm/obj/SHARED_LIBRARIES/libstlport_intermediates/src/locale_impl.o: In function `__static_initialization_and_destruction_0':
     external/stlport/src/locale_impl.cpp:31: undefined reference to `__dso_handle'
out/target/product/vm/obj/SHARED_LIBRARIES/libstlport_intermediates/src/locale_impl.o: In function `std::_Locale_impl::make_classic_locale()':
     external/stlport/src/locale_impl.cpp:670: undefined reference to `__dso_handle'
     external/stlport/src/locale_impl.cpp:667: undefined reference to `__dso_handle'
out/target/product/vm/obj/SHARED_LIBRARIES/libstlport_intermediates/src/locale_impl.o:external/stlport/src/locale_impl.cpp:604: more undefined
     references to `__dso_handle' follow
     collect2: ld returned 1 exit status 
     修改external/stlport/dll_main.cpp,加入以下声明:
      extern "C" {
            void * __dso_handle = 0;
     } 
     四. 编译SDK,这一步是可选的。
     1. 编译。执行以下命令:
     USER-NAME@MACHINE-NAME:~/Android$ make sdk
     2. 编译过程中可能会遇到的问题。
      问题一:找不到bios.bin和vgabios-cirrus.bin文件
     couldn't locate source file: usr/share/pc-bios/bios.bin
     couldn't locate source file: usr/share/pc-bios/vgabios-cirrus.bin
     注意,这里的usr/share目录指的是~/Android/out/host/linux-x86目录下的usr/share目录,修改办法是复制~/Android/prebuilt/common下的pc-bios文件夹到~/Android/out/host/linux-x86/usr/share即可:
      USER-NAME@MACHINE-NAME:~/Android$ cp ~/Android/prebuilt/common/pc-bios ~/Android/out/host/linux-x86/usr/share
    问题二:找不到ddmlib-tests.jar、 ninepath-tests.jar 、common-tests.jar 和sdkuilib-tests.jar文件
    在~/Android/out/host/linux-x86/framework这个目录下,可以找到以下几个文件common.jar、ddmlib.jar、ninepatch.jar、sdkuilib.jar这四个文件,然后将它们分别复制一份,并重命名,命名的原则很简单,就是在原有的名字后面跟上-tests即可。
    五. 安装编译好的Android镜像到模拟器上。
    1. 设置环境变量:
     USER-NAME@MACHINE-NAME:~/Android$ export PATH=$PATH:~/Android/out/host/linux-x86/bin  
     USER-NAME@MACHINE-NAME:~/Android$ export ANDROID_PRODUCT_OUT=~/Android/out/target/product/generic
    其中,~/Android/out/host/linux-x86/bin有我们要执行的emulator命令,而~/Android/out/target/product/generic是Android镜像存放目录,下面执行emulator命令时会用到。
    2. 运行模拟器。
     USER-NAME@MACHINE-NAME:~/Android$ emulator
    模拟器运行需要四个文件,分别是Linux Kernel镜像zImage和Android镜像文件system.img、userdata.img和ramdisk.img。执行emulator命令时,如果不带任何参数,则Linux Kernel镜像默认使用~/Android/prebuilt/android-arm/kernel目录下的kernel-qemu文件,而Android镜像文件则默认使用ANDROID_PRODUCT_OUT目录下的system.img、userdata.img和ramdisk.img,也就是我们刚刚编译出来的镜像问题。
    当然,我们也可以以指定的镜像文件来运行模拟器,即运行emulator时,即:
    USER-NAME@MACHINE-NAME:~/Android$ emulator -kernel ./prebuilt/android-arm/kernel/kernel-qemu -sysdir ./out/target/product/generic -system system.img -data userdata.img -ramdisk ramdisk.img
    到这里,我们就可以在模拟器上运行我们自己编译的Android镜像文件了,是不是很酷呢?但是注意,这里说的Android镜像文件,只是包括system.img、userdata.img和ramdisk.img这三个文件,而Linux Kernel镜像用的是Android为我们预编译好的kernel-qemu镜像。那么,有没有办法使用我们自己编译的Linux Kernel镜像呢?答案上肯定的,这样我们就可以完全DIY自己的Android系统了!我将在下一篇文章描述如果编译自己的Linux Kernel镜像,敬请期待~

PS:主线上最新源代码是不稳定版本,使用过程可能会有问题


查看评论
44楼  happygirl20121688 2012-05-12 15:03发表  [回复]
Android2.1: make 编译时:报:
Android 编译时:出现以下错误:

Install: out/host nux-x86/bin/apicheck
Checking API: checkapi-last
(unknown): error 7: Removed package android.telephony.cdma
(unknown): error 7: Removed package android.telephony.gsm
(unknown): error 8: Removed public class android.telephony.CellLocation
(unknown): error 8: Removed public class android.telephony.NeighboringCellInfo
(unknown): error 8: Removed public class android.telephony.PhoneNumberFormattingTextWatcher
(unknown): error 8: Removed public class android.telephony.PhoneNumberUtils
(unknown): error 8: Removed public class android.telephony.PhoneStateListener
******************************
You have tried to change the API from what has been previously released in
an SDK. Please fix the errors listed above.
******************************
make: *** [out/target/common/obj/PACKAGING checkapi-last-timestamp] Error 38

请楼主帮忙看一下怎么排除?
这个问题有几天没有解了,急呀,请楼主帮忙看一下怎么排除?
EMAIL : [email protected]
43楼  happygirl20121688 2012-05-12 14:58发表  [回复]
Android2.1: make 编译时:报:
Android 编译时:出现以下错误:

Install: out/host nux-x86/bin/apicheck
Checking API: checkapi-last
(unknown): error 7: Removed package android.telephony.cdma
(unknown): error 7: Removed package android.telephony.gsm
(unknown): error 8: Removed public class android.telephony.CellLocation
(unknown): error 8: Removed public class android.telephony.NeighboringCellInfo
(unknown): error 8: Removed public class android.telephony.PhoneNumberFormattingTextWatcher
(unknown): error 8: Removed public class android.telephony.PhoneNumberUtils
(unknown): error 8: Removed public class android.telephony.PhoneStateListener
(unknown): error 8: Removed public class android.telephony.SmsManager
******************************
You have tried to change the API from what has been previously released in
an SDK. Please fix the errors listed above.
******************************
make: *** [out/target/common/obj/PACKAGING checkapi-last-timestamp] Error 38

请楼主帮忙看一下怎么排除?
42楼  dxy361558481 2012-04-30 09:47发表  [回复]
罗老师……我在编译sdk是出现的问题是在development/build/sdk.atree文件71行,内容是无法确定源文件中的userdata.img,请问该如何解决?
41楼  Kaiwii 2012-04-16 16:10发表  [回复]
罗老师,你好!我的编译过程没有出现任何错误,但是打开emulator的时候,就是没有任何显示,通过./adb devices查看显示这个虚拟机的状态是offline。不知道如何解决?
40楼  Gongqingshuai 2012-04-01 09:42发表  [回复]
host Executable: grxmlcompile (out/host/linux-x86/obj/EXECUTABLES/grxmlcompile_intermediates/grxmlcompile)
out/host/linux-x86/obj/EXECUTABLES/grxmlcompile_intermediates/gr_iface.o: file not recognized: File truncated
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/grxmlcompile_intermediates/grxmlcompile] Error 1


这是什么意思
39楼  Gongqingshuai 2012-04-01 09:36发表  [回复]
[out/host/linux-x86/obj/EXECUTABLES/grxmlcompile_intermediates/grxmlcompile] Error 1

很急,请问我编译出了这个错误是什么意思,怎么解决
38楼  njfylong 2012-03-30 17:06发表  [回复]
你好,我按google文档上的方法不能下载源码,所以在网上找了Android源码,但是发现源码目录下没有makefile,根本不能make。这是怎么回事呢???
37楼  ye7813629 2012-03-12 12:18发表  [回复]
在安装repo工具的时候
$ mkdir ~/bin
$ PATH=~/bin:$PATH //这里要设置路径
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo 
$ chmod a+x ~/bin/repo
至于下载不了的上官网看看吧,我也在网上搜索了好多地址,最后在官网找到了
关于 repo官网详细解析http://source.android.com/source/downloading.html
36楼  haitao111313 2012-03-08 14:21发表  [回复]
上面的错了
我编译的时候碰见下面这个错误,几天了一直解决不了,也查不到,请问博主这是什么错误?? 后面的评论都看了,没有看到跟我一样的错误!

collect2: ld terminated with signal 7 [Bus error]
35楼  haitao111313 2012-03-08 14:20发表  [回复]
我不编译的时候碰见下面这个错误,几天了一直解决不了,也查不到,请问博主这是什么错误??

collect2: ld terminated with signal 7 [Bus error]
34楼  Buaaroid 2012-03-07 22:04发表  [回复]
fruit@ubuntu:~$ wget http://android.git.kernel.org/repo
--2012-03-07 21:45:50-- http://android.git.kernel.org/repo
Resolving android.git.kernel.org... 149.20.4.77
Connecting to android.git.kernel.org|149.20.4.77|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://android.googlesource.com/repo [following]
--2012-03-07 21:45:51-- http://android.googlesource.com/repo
Resolving android.googlesource.com... 74.125.71.82
Connecting to android.googlesource.com|74.125.71.82|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2012-03-07 21:45:52 ERROR 404: Not Found.

repo安装不上,怎么回事啊?罗哥给我发一下吧:[email protected]
33楼  libin3922688 2012-02-23 21:42发表  [回复]
您好,老师前面几步可以讲的在详细一点吗,麻烦您了
Re:  libin3922688 2012-02-23 21:59发表  [回复]
还有怎样在ubuntu上执行命令呢,请老师指点
32楼  liguoqing19861028 2012-02-15 09:56发表  [回复]
/usr/bin/ld: cannot find -lm
/usr/bin/ld: cannot find -lc
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp] 错误 1
make: *** 正在等待未完成的任务....
注意:某些输入文件使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
注意:某些输入文件使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
注意:某些输入文件使用或覆盖了已过时的 API。
注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
/usr/bin/ld: cannot find -lm
/usr/bin/ld: cannot find -lc
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp] 错误 1
make: *** 正在等待未完成的任务....
注意:某些输入文件使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
注意:某些输入文件使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
注意:某些输入文件使用或覆盖了已过时的 API。
注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
博主,总是出现这个问题,解决不了,无法编译。求指教
31楼  yigelangmandeshiren 2012-02-06 17:08发表  [回复]
lao luo :
wo shi yong sudo apt-get install git-core gnupg 
bao cuo 
Reading package lists... Done
Building dependency tree 
Reading state information... Done
gnupg is already the newest version.
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
git-core: Depends: liberror-perl but it is not installable
Depends: libdigest-sha1-perl but it is not installable
Recommends: patch but it is not installable
E: Broken packages

qing wen zen me jie jue ?? xie xie
30楼  floweriswho 2012-02-01 13:53发表  [回复]
博主你有没有遇见过这种情况
li@li-laptop:~/android_data/source-android/4.0android$ emulator -kernel kernel/goldfish/arch/arm/boot/zImage -sysdir ./out/target/product/generic -system system.img -data userdata.img -ramdisk ramdisk.img
emulator: WARNING: system partition size adjusted to match image file (168 MB > 66 MB)

qemu: could not load initrd 'ramdisk.img'

提示:qemu: could not load initrd 'ramdisk.img'
我运行的是 android4.0版本
29楼  JPduck 2012-01-16 17:07发表  [回复]
博主:
make: *** 没有规则可以创建“out/host/linux-x86/obj/EXECUTABLES/etc1tool_intermediates/etc1tool”需要的目标“out/host/linux-x86/obj/STATIC_LIBRARIES/libETC1_intermediates/libETC1.a”。 停止。
这个是怎么回事啊?
28楼  nos19880918 2012-01-09 16:40发表  [回复]
没有make sdk ,模拟器也能运行吗?
Re:  Luoshengyang 2012-01-11 14:43发表  [回复]
回复nos19880918:可以
27楼  yxfky17 2011-12-27 15:44发表  [回复]
楼主,你好,自己编译android源码后,启动模拟器,但是无法给模拟器创建sd卡,这是为什么呢?
Re:  Luoshengyang 2011-12-27 18:09发表  [回复]
回复yxfky17:创建不了还是启动不了?创建和启动不是一回事。
Re:  yxfky17 2011-12-28 14:37发表  [回复]
回复Luoshengyang:模拟器能够成功启动,但是模拟器里的sd卡无法使用,即使给模拟器创建sd卡也无法使用。而官方下载的sdk启动模拟器,创建sd卡后可以使用。楼主你遇到过这个问题吗?
Re:  Luoshengyang 2011-12-29 13:42发表  [回复]
回复yxfky17:没碰到这个问题,估计是跟emulator有关吧。
26楼  zeflove 2011-12-22 15:16发表  [回复]
您好,
您的文章写得非常好,先顶一个。
我在ubuntu上编译出错了:
out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_dscp.c:18:37: error: linux/netfilter/xt_dscp.h: No such file or directory
我有几个问题,麻烦您一下:
1.libxt_dscp.c 中#include linux/netfilter/xt_dscp.h这句中的xt_dscp.h指的是哪个?(我ubuntu中的还是kernel里的?)
2.这个错误的解决方法
3. 能否讲一下整个编译过程所经历的步骤
谢谢您
Re:  Luoshengyang 2011-12-26 22:07发表  [回复]
回复zeflove:1. 既不是主机上的,也不是kernel目录下的,貌似是交叉编译工具自带的一个文件;
2. 在Android源代码目录下搜索一下,看看能不能找到这个文件;
3. 编译步骤文章已经讲得比较清楚了,如果有问题,可以看看文章后面的评论,参考一下其它网友遇到的问题。
25楼  xiaoyi20081794 2011-12-22 10:53发表  [回复]
前辈,您好:
我的环境是:vmware+ubuntu32+jdk1.5+android2.2,编译已经成功。但运行emulator报错。错误是:SDL init failure,reason is:No abailable video device
Re:  Luoshengyang 2011-12-22 11:54发表  [回复]
回复xiaoyi20081794:看看这里:http://datoplay.iteye.com/blog/1271385
24楼  z4hyoung 2011-12-01 15:02发表  [回复]
博主,你好!
我在Linux下编译通过,但是我不想用虚拟机,就在windows下启动SDK中的emulator.exe命令,参数设置一样,出现错误emulator: ERROR: Cannot find system image file: system.img,请问怎么回事?谢谢!
Re:  z4hyoung 2011-12-01 15:04发表  [回复]
回复z4hyoung:补充:确认路径上有system.img、userdata.img和ramdisk.img三个文件
Re:  Luoshengyang 2011-12-02 09:51发表  [回复]
回复z4hyoung:用emulator --help-disk-images检查一下路径是否正确吧。
23楼  huiyong446 2011-11-30 10:20发表  [回复]
罗老大,小弟以后就跟你了,呵呵
22楼  gejisit 2011-11-28 16:59发表  [回复]
支持一下
21楼  zyhuangan 2011-11-21 07:19发表  [回复]
老师我在编译前的操作都成功了,但是在编译的时候出现了如下的错误:
:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror]
:0:0: note: this is the location of the previous definition
cc1plus: all warnings being treated as errors
make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1
能帮我看看是怎么回事吗?
Re:  Luoshengyang 2011-11-21 21:22发表  [回复]
回复zyhuangan:可以参考一下这篇文章: http://www.cnblogs.com/chu888chu888/archive/2011/11/16.html
20楼  Righthek 2011-11-18 15:12发表  [回复]
请教罗博主,在编译android源码时:出现的错误提示:
framework/policies/base/PolicyConfig.mk:19:** PRODUCT_POLICY MUST be defined. . Stop
是什么原因呢?
Re:  Luoshengyang 2011-11-20 00:20发表  [回复]
回复Righthek:你貌似是在编译比较旧的版本的源代码?呵呵~
参考一下这篇文章看看http://www.linuxidc.com/Linux/2011-05/35891.htm
19楼  rambo2188 2011-11-16 00:15发表  [回复]
Android 4.0.1 刚出来,忍不住第一时间 下载,编译emulator。竟然出奇的顺利:
http://blog.csdn.net/rambo2188/article/details/6943382
没有碰到什么问题,一点没有成就感啊。
18楼  ZJPOP 2011-11-15 09:47发表  [回复]
楼主你好,我在编译的中途遇到这个问题:
Unable to access jarfile /framework/apicheck.jar
同时有这样的提示
******************************
You have tried to change the API from what has been previously released in an SDK. Please fix the errors listed above.
******************************
在我的/out/host/linux-x86/framework里已经有了这个jar文件,我在网上搜了好长时间了,没找到合适的答案,能否帮忙解答一下,谢谢
Re:  ZJPOP 2011-11-15 11:00发表  [回复]
回复ZJPOP:补充一下,出错是在
Install: out/host/linux-x86/bin/apicheck
Checking API: checkapi-last
时发生的
Re:  Luoshengyang 2011-11-15 22:24发表  [回复]
回复ZJPOP:可以参考一下这里http://www.eoeandroid.com/thread-84145-1-1.html
Re:  Luoshengyang 2011-11-15 22:22发表  [回复]
回复ZJPOP:不知道你有没有对源码做过什么修改,试试make update-api命令。
17楼  famingyuan 2011-11-09 10:25发表  [回复]
我发现了,好像是我没有执行make snod 这条命令,以至于模拟器出现黑屏,无法启动。
16楼  guonanyun 2011-11-08 16:10发表  [回复]
博主,我照你的步骤安装Java SDK的时候,报如下错误:
sudo: add-apt-repository : command not found
是不是命令拼写有问题啊?
Re:  Luoshengyang 2011-11-08 21:23发表  [回复]
回复guonanyun:你的ubuntu没装python?
15楼  Luoshengyang 2011-11-06 11:57发表  [回复]
经过验证,文章中提到的repo工具下载链接 http://android.git.kernel.org/repo已经失效,请参考官方文档(http://source.android.com/source/downloading.html),上面提供有新的链接:https://dl-ssl.google.com/dl/googlesource/git-repo/repo
14楼  stillhere163 2011-11-04 12:56发表  [回复]
能不能自己DIYAndroid系统然后刷到手机上???
Re:  Luoshengyang 2011-11-05 12:32发表  [回复]
回复stillhere163:可以
Re:  stillhere163 2011-11-24 10:56发表  [回复]
回复Luoshengyang:哪里有相关文章呀?想看看、谢谢!
Re:  Luoshengyang 2011-11-24 21:30发表  [回复]
回复stillhere163:不好意思,我没有关注过此类的文章,不过网上应该是挺多的~
13楼  nizuimeiabc1 2011-11-02 13:14发表  [回复]
这篇文章写得好好哦!!我什么时候才能。。。?
12楼  yxfky 2011-10-31 16:57发表  [回复]
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libGLcommon_intermediates/GLDispatch.o] 错误 1
编译源代码时出现这个问题,请问楼主怎么解决?
Re:  Luoshengyang 2011-10-31 21:40发表  [回复]
回复yxfky:我编译的时候没碰到过这个问题,不过下载主线上的最新源代码的确是有风险,因为这些代码是有人不断地在修改的,建议:
1. 网上找资料看看能不能找到解决的办法;
2. 试着多repo sync几次,看看能不能把新的代码更新下来,这个有时候就要看人品了;
3. 如果前面两个办法都行不通,那就在repo init -u git://android.git.kernel.org/platform/manifest.git命令后面加上-b选项来下载稳定的分支吧。
Re:  yxfky 2011-11-02 14:18发表  [回复]
回复Luoshengyang:还是黑屏,启动模拟器,就出现这个警告emulator: WARNING: system partition size adjusted to match image file (85 MB > 66 MB)。网上提供了一种方法:emulator -partition 100M,可是还没用,提示:
unknown option: -partition
please use -help for a list of valid options
Re:  Luoshengyang 2011-11-02 21:56发表  [回复]
回复yxfky:这个选项是黑屏没有关系,估计还是跟下载下来的源代码有关。这个。。。有时候拼的是人品~
Re:  yxfky 2011-11-01 11:05发表  [回复]
回复Luoshengyang:后来上网找到解决的办法了。我还有一个问题,android源码编译成功后,环境变量也设置了,可是运行模拟器出现黑屏。
Re:  Luoshengyang 2011-11-01 21:25发表  [回复]
回复yxfky:这个要一步一步查一下了,看看能不能用用adb工具连上模拟器,如果能连上的话,就查看一下log
Re: yxfky2011-11-16 11:23发表 [回复]
回复Luoshengyang:我下载的源代码是2.3.7的,分别在两台电脑编译,都编译成功了,但是有一台运行模拟器是黑屏,就是看不到手机界面,而另外一台运行模拟器就不会
Re: Luoshengyang2011-11-16 23:27发表 [回复]
回复yxfky:这么诡异?莫非跟你的机器有关?
Re: yxfky2011-11-17 09:52发表 [回复]
回复Luoshengyang:我们试了好几台机器,都能编译成功,只有一台机器是64位的,能够正常启动模拟器,其他机器运行模拟器都黑屏。是不是因为我们下载的android源码是2.3.7,需要64位的机器才行?
Re: Luoshengyang2011-11-17 22:09发表 [回复]
回复yxfky:你看看是不是因为这篇文章讲到的可能会遇到的问题:You are attempting to build on a 32-bit system,或者是类似的问题,这个就要检查一下build/core目录下面的编译脚本了
11楼  kvmalloc 2011-10-29 16:43发表  [回复]
请问,我发现emulator运行时默认使用的linux kernel镜像文件是./prebuilt/android_arm/kernel/kernel-qemu-armv7而不是kernel-qemu,这是什么原因呢?这样也导致,运行我自己编译出来的linux kernel镜像文件zImage,出现黑屏,不动,adb shell也不能运行。
Re:  Luoshengyang 2011-10-30 00:09发表  [回复]
回复kvmalloc:你确定你的emulator默认是使用kernel-qemu-armv7么?
Re:  kvmalloc 2011-10-30 14:02发表  [回复]
回复Luoshengyang:谢谢您的回复!我确定!我把kernel-qemu更名,是emulator是可以起来的,但是把kernel-qemu-armv7更名,就起不来了,提示说找不到“kernel-qemu-armv7”。另外,我编译出来的zImage只有1.4M(linux-2.6.29_gldfish),而kernel-qemu和kernel-qemu-armv7有1.5M。
Re:  Luoshengyang 2011-10-30 22:43发表  [回复]
回复kvmalloc:那这就奇怪了,你用emulator -help-build-images命令看看,你的emulator默认是不是用kernel-qemu-armv7文件作为内核镜像。
另外,你也可以尝试一下用-kernel选项指定用kernel-qemu文件作为内核镜像启动emulator,看看有没有问题。
Re: kvmalloc2011-11-01 22:44发表 [回复]
回复Luoshengyang:用emulator -help-build-images命令看看,默认是kernel-qemu,但是用-kernel指定只有kernel-qemu-armv7才能起来。我觉得是最新的源码中平台的版本变了,以下信息可以得知:PLATFORM_VERSION_CODENAME=AOSP,PLATFORM_VERSION=3.1.4.1.5.9.2.6.5,TARGET_ARCH=arm,TARGET_ARCH_VARIANT=armv7-a。平板版本是3.1.4,架构变量armv7-a。请问,怎么把PLATFORM_VERSION和TARGET_ARCH_VARIANT切换到低的版本,例如2.3.4?
Re: Luoshengyang2011-11-02 21:50发表 [回复]
回复kvmalloc:PLATFORM_VERSION的定义是没有问题的,而且它不会影响到代码的编译,你试一下在build/core目录下搜索一下TARGET_ARCH_VARIANT变量的定义吧,然后改一下,理论是向后兼容的。
10楼  c325061100 2011-09-19 15:02发表  [回复]
wget http://android.git.kernel.org/repo
请问楼主,无法访问,没办法安装repo,该如何解决。
[email protected]
Re:  jimiahua 2011-10-07 11:52发表  [回复]
回复c325061100:1. 这里可以下载Android源代码:
https://www.codeaurora.org/gitweb/quic/la/?p=kernel/common.git;a=summary。
2. 下载说明在这里:
https://www.codeaurora.org/xwiki/bin/QAEP/
Re:  Luoshengyang 2011-09-19 21:22发表  [回复]
回复c325061100:这也没办法了,据说最近Android源代码服务器是很不稳定,看看有没有其它地方是可以直接下载到源代码工程的
Re:  mickeymqg 2011-09-23 14:24发表  [回复]
回复Luoshengyang:wget http://android.git.kernel.org/repo 我也下载不到源码,但我在其它网站上下载到了2.2的源码,不知如何配置?
Re:  Luoshengyang 2011-09-24 00:21发表  [回复]
回复mickeymqg:有了源代码,配置和编译方法都是一样的
9楼  chen375811585 2011-09-17 22:44发表  [回复]
楼主你好,我第一次编译都很成功,模拟器也起来了。。可今天再用emulator 命令时,发现找不到该命令,重设环境变量,emulator命令可用,不过不能起来,发现在out/target/product/generic目录下只有system.img文件。。其他的两个镜像文件不见了,之前编译成功看时是有的,请问这是什么问题啊,谢谢
Re:  Luoshengyang 2011-09-17 23:40发表  [回复]
回复chen375811585:再重新编译一下源代码看看
8楼  wzhq0598 2011-09-01 21:05发表  [回复]
楼主,你好
请问下使用 repo sync 出现
android.git.kernel.org[0: 199.6.1.173]: errno=Connection refused
android.git.kernel.org[0: 149.20.4.77]: errno=Connection refused
。。。
fatal: unable to connect a socket (Network is unreachable)
error: Cannot fetch platform/bionic
会是什么问题呀,网络是好的,可以正常浏览网页!
Re:  Luoshengyang 2011-09-01 23:06发表  [回复]
回复wzhq0598:网络好并不代表你就能访问到android.git.kernel.org服务器,多试几次吧
7楼  Pear174726576 2011-08-26 11:23发表  [回复]
楼主你好。 你写的文章真的很不错。 我照你的步骤做的时候,出现这个问题。 能帮我看一下吗
emulator: ERROR: You did not specify a virtual device name, and the system
directory could not be found.

If you are an Android SDK user, please use '@' or '-avd '
to start a given virtual device (see -help-avd for details).

Otherwise, follow the instructions in -help-disk-images to start the emulator
Re:  Pear174726576 2011-08-26 11:24发表  [回复]
回复Pear174726576:我想问一下 最后一步不需要加什么 参数 吗
Re:  Luoshengyang 2011-08-26 21:34发表  [回复]
回复Pear174726576:仔细研究一下第五步:
五. 安装编译好的Android镜像到模拟器上
后面如果不带参数,就要设置好环境变量
6楼  timchen6824 2011-08-25 15:41发表  [回复]
emulator: ERROR: No initial system image for this configuration!
我在“安装编译好的Android镜像到模拟器上。”环节上出现这个问题
请问下这个是哪个环节出问题了。
Re:  timchen6824 2011-08-25 15:45发表  [回复]
回复timchen6824:补充下,按照哪个带路径的命令执行报下面错误,emulator: ERROR: System image file doesn't exist: ./out/target/product/generic/system.img
请问要怎么解决。谢谢
Re:  Luoshengyang 2011-08-25 21:08发表  [回复]
回复timchen6824:你确定你已经编译成功了么,如果编译成功了,在./out/target/product/generic/目录下会有system.img文件,你可以去看一下,如果确定已经编译成功了,就看一下你的system.img文件放在哪里
Re:  timchen6824 2011-08-26 18:42发表  [回复]
回复Luoshengyang:你好 现在启动起来了 为什么一直停留在 一个黑屏框界面?
Re: Luoshengyang2011-08-26 21:45发表 [回复]
回复timchen6824:看看能不能用adb shell命令连上模拟器,如果能连上的话,用cat命令查看/proc/kmsg里面的日志,看看能不能发现什么线索
Re: timchen68242011-08-29 17:27发表 [回复]
回复Luoshengyang:又来麻烦你了
我现在出了一个新问题

emulator: WARNING: system partition size adjusted to match image file (97 MB > 66 MB)

netPipe_initTcp: Port is '22468'
netPipe_initFromAddress: Could not connect to socket: Connection refused
段错误


请问这种情况是什么引起的
要怎么处理? 谢谢
Re: Luoshengyang2011-08-29 21:38发表 [回复]
回复timchen6824:你的模拟器正常启动起来了么?这个问题看起纯粹是模拟器的问题,模拟器的端口打不开,和Android源代码没有关系。
Re: timchen68242011-08-30 10:30发表 [回复]
回复Luoshengyang:就是启动模拟器的时候启动不起来。有什么解决方法么~~~~卡在这点有没有~~
Re: wantianpei2011-09-04 11:29发表 [回复]
回复timchen6824:emulator: WARNING: system partition size adjusted to match image file (97 MB > 66 MB)

netPipe_initTcp: Port is '22468'
netPipe_initFromAddress: Could not connect to socket: Connection refused
“不小心”来回答你们的问题。解决这个问题。
一、这是问题原因是system.img有问题。把这个system.img用别的替换即可。可是这样一来就没有编译的意义所在了。
二、问题根源在于,你们不应该下载这个分支:~/Android$ repo init -u git://android.git.kernel.org/platform/manifest.git
因为这是最新的源码,最新的肯定不是最好的,很多功能可能不稳定不完善。而且天天更新,也许你昨天下载的可以用,今天下载的有问题都是有可能的。
所以很可能是楼主下载的时候没有问题,而你们下载的时候有问题。刚出来的源码系统兼容性也没有保障,出问题更是没人可解。
所以你们去下载一个andriod2.3比较稳定的分支就可以了。比如说:android2.3.4。去网上搜索一下git分支,下载即可。可是最近好像谷歌闹问题,源码老是下载不了。好事做好底,贴上一个源码链接,可以参考。我已经验证,编译OK。(有问题可按照楼主文章修改)
http://zhuwenhao.com/831/%E6%8A%80%E6%9C%AF/%E8%87%AA%E7%94%B1%E8%BD%AF%E4%BB%B6%E7%A4%BE%E5%8C%BA/android/android-2-3-gingerbread-%E5%8E%9F%E7%89%88%E6%BA%90%E4%BB%A3%E7%A0%81%E5%8E%8B%E7%BC%A9%E5%8C%85%E4%B8%8B%E8%BD%BD/
此代码已经打包好,直接下载后,解压即可。(如果是虚拟机,请不要先解压再拷进虚拟机,应该拷进虚拟机再解压。)
Re: timchen68242011-09-09 11:16发表 [回复]
回复wantianpei:这位兄弟很给力。多谢。我 再try try
Re: lidonghan9282011-09-06 09:11发表 [回复]
非常感谢,我这几天一直在试图寻找原因,却没曾想到过是这么个原因,谢谢这位兄弟!
Re: Luoshengyang2011-09-04 13:16发表 [回复]
回复wantianpei:大赞这位兄弟啊~~帮大家解惑了~~
Re: Luoshengyang2011-08-30 22:38发表 [回复]
回复timchen6824:这个的确不好办,不知道是不是跟你的系统有关。
Re: lidonghan9282011-08-31 21:26发表 [回复]
回复Luoshengyang:我也遇到同样问题,网上搜不到相关资料,等待高人解答!
Re: Luoshengyang2011-08-31 21:43发表 [回复]
回复lidonghan928:提供一个线索,敲出下面这两条LOG:
netPipe_initTcp: Port is '22468'
netPipe_initFromAddress: Could not connect to socket: Connection refused
分别是在external/qemu/android/hw-pipe-net.c文件里面的netPipe_initTcp和netPipe_initFromAddress两个函数里面
5楼  floweriswho 2011-08-22 21:35发表  [回复]
博主 !
我报的错怎么跟你们的都不一样阿
build/core/base_rules.mk:103: *** user tag detected on new module - user tags are only supported on legacy modules。 停止。
不知道 博主 见没见过 我用的是 ubuntu11.4
Re:  Luoshengyang 2011-08-22 22:33发表  [回复]
回复floweriswho:可以参考一下这篇文章:http://blog.sina.com.cn/s/blog_4b7358870100rw2z.html
Re:  Luoshengyang 2011-08-22 21:46发表  [回复]
回复floweriswho:没有,网上找一下资料看看
Re:  floweriswho 2011-08-22 22:50发表  [回复]
回复Luoshengyang:错误升级了。
build/core/base_rules.mk:162: *** platform/bionic/libc: MODULE.TARGET.STATIC_LIBRARIES.libc_common already defined by bionic/libc。 停止。
楼主知道么?
真的很想跟 楼主 走下去阿。。
4楼  lyzc11 2011-07-20 16:46发表  [回复]
find: `out/target/common/docs/gen': 没有那个文件或目录
find: `frameworks/base/frameworks/base/docs/html': 没有那个文件或目录
find: `out/target/common/docs/gen': 没有那个文件或目录
Copying: out/target/common/obj/JAVA_LIBRARIES/core_intermediates/classes.jar
Copying: out/target/common/obj/JAVA_LIBRARIES/core_intermediates/noproguard.classes.jar
Copy: dx (out/host/linux-x86/obj/EXECUTABLES/dx_intermediates/dx)
Install: out/host/linux-x86/bin/dx
target Dex: core
如果说是代码取得不完整,我再重新repo sync,却又没有错误,提示如下,
Fetching projects: 100% (183/183), done. 
Syncing work tree: 100% (183/183), done.
所以,编译android错误是为什么?
Re:  m313856126 2011-09-23 20:03发表  [回复]
回复lyzc11:我也遇到过你这种问题,并没有报错,就是卡着不动。然后就提示make被killed。可能的原因是你虚拟机的内存太小了。总之我将虚拟机内存提到2G后没有这种情况了,但不确定就是内存的事情,不知道你的问题解决了没有,怎么解决的?
Re:  Luoshengyang 2011-07-20 17:10发表  [回复]
回复lyzc11:从你贴的log来看,没看到有错误出现,“没有那个文件或目录”这个不算是错误。
你看一下编译的最后有没有下面的输出:
Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img
Install system fs image: out/target/product/generic/system.img
Target ram disk: out/target/product/generic/ramdisk.img
Target userdata fs image: out/target/product/generic/userdata.img
Installed file list: out/target/product/generic/installed-files.txt 
或者你进入out/target/product/generic目录,看看有没有system.img、ramdisk.img和userdata.img这三个文件
Re:  lyzc11 2011-07-20 17:54发表  [回复]
回复Luoshengyang:版主,编译到如下时卡住了,
frameworks/base/core/res/res/values/public.xml:647: warning: No comment for public symbol android:style/Widget.TextView.SpinnerItem
frameworks/base/core/res/res/values/public.xml:656: warning: No comment for public symbol android:style/Widget.WebView
target Java: framework (out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes)
注意:某些输入文件使用或覆盖了已过时的 API。
注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
注意:某些输入文件使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
Copying: out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes-jarjar.jar
Copying: out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/emma_out/lib/classes-jarjar.jar
Copying: out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
Copying: out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/noproguard.classes.jar
target Dex: framework
Re:  Luoshengyang 2011-07-20 20:59发表  [回复]
回复lyzc11:回复lyzc11:一直都卡住不动了?这种情况我倒是没碰到过。你用的Ubuntu是什么版本的?有可能是跟你的编译环境有关。
Re: liguoqing198610282011-12-27 17:34发表 [回复]
A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x40229ef1, pid=10783, tid=2837425008
#
# JRE version: 6.0_26-b03
# Java VM: Java HotSpot(TM) Client VM (20.1-b02 mixed mode linux-x86 )
# Problematic frame:
# V [libjvm.so+0x6eef1] markOopDesc::must_be_preserved_with_bias(oopDesc*) const+0x21
#
# An error report file with more information is saved as:
# /home/android/android4.0/hs_err_pid10783.log
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
注意:某些输入文件使用或覆盖了已过时的 API。
注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
make: *** [out/host/common/obj/JAVA_LIBRARIES/core-hostdex_intermediates/classes.dex] 已放弃
楼主,又有新问题了,还是编译不了,求帮忙
Re: liguoqing198610282011-12-27 17:59发表 [回复]
回复liguoqing19861028:view frameworks/base/core/java/overview.html -hdf sdk.version 4.0 -hdf sdk.rel.id 1 -hdf sdk.preview 0 -parsecomments
make: *** [out/target/common/docs/doc-comment-check-timestamp] 错误 45
make: *** 正在等待未完成的任务....
我用的ubuntu11.04 32位的
下载的 是 android4.0.1 r1 的 源码
Re: liguoqing198610282011-12-26 10:30发表 [回复]
warning: No comment for public symbol android:style/Widget.RatingBar
frameworks/base/core/res/res/values/public.xml:650: warning: No comment for public symbol android:style/Widget.ScrollView
frameworks/base/core/res/res/values/public.xml:637: warning: No comment for public symbol android:style/Widget.SeekBar
frameworks/base/core/res/res/values/public.xml:645: target Dex: framework
make: *** [out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/noproguard.classes-with-local.dex] 已杀死
楼主,我也有同样的问题啊。 编译不过,这是 什么问题。求指教
Re: liguoqing198610282011-12-26 11:09发表 [回复]
回复liguoqing19861028:/bin/bash: 第 0 行: cd: cts/tools/cts-native-xml-generator/src/res: 没有那个文件或目录
target Dex: framework照着 官网 上的 步骤 编译 不过
上面的 问题老出现,结果就这样了
host C: libSR_Core <= external/srec/srec/ca/../cfront/spec_anl.c
make: *** [out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/noproguard.classes-with-local.dex] 已杀死
make: *** 正在等待未完成的任务....
Re: Luoshengyang2011-12-26 22:28发表 [回复]
回复liguoqing19861028:你的内存有多大?
Re: liguoqing198610282011-12-27 08:56发表 [回复]
回复Luoshengyang:我给虚拟机分配的是512M内存
Re: Luoshengyang2011-12-27 18:06发表 [回复]
回复liguoqing19861028:512M。。。。。2G都吃不消。。。。。加内存吧
3楼  lyzc11 2011-07-20 16:46发表  [回复]
版主,将android下载下来后,执行make,出现如下问题,可否帮忙解答一下,由于回复内容不能超过1000字,我分两条来发送。
============================================
PLATFORM_VERSION_CODENAME=AOSP
PLATFORM_VERSION=3.1.4.1.5.9.2.6.5
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=OPENMASTER
============================================
find: `frameworks/base/frameworks/base/docs/html': 没有那个文件或目录
find: `out/target/common/docs/gen': 没有那个文件或目录
find: `frameworks/base/frameworks/base/docs/html': 没有那个文件或目录
find: `out/target/common/docs/gen': 没有那个文件或目录
find: `frameworks/base/frameworks/base/docs/html': 没有那个文件或目录
find: `out/target/common/docs/gen': 没有那个文件或目录
find: `frameworks/base/frameworks/base/docs/html': 没有那个文件或目录
2楼  lyzc11 2011-07-19 17:16发表  [回复]
请问下载的源码大概有多大? VM中分配10G似乎都不太够?
Re:  Luoshengyang 2011-07-19 21:18发表  [回复]
回复lyzc11:源码下载下来后,当时没看有多大。刚才统计了一下编译之后的源代码工程,包括了Android的内核代码,一共有13G左右。10G磁盘空间的确有问题,我预留了25G的磁盘空间。谢谢指正。
1楼  lyzc11 2011-07-19 11:38发表  [回复]
请问, 下载完repo ,USER-NAME@MACHINE-NAME:~$ wget http://android.git.kernel.org/repo
再修改权限,执行以下两句
USER-NAME@MACHINE-NAME:~$ chmod 777 repo
USER-NAME@MACHINE-NAME:~$ cp repo /bin/
为什么提示,cp:无法创建普通文件, /bin/repo 权限不够???
Re:  Luoshengyang 2011-07-19 12:31发表  [回复]
回复lyzc11:用超级管理员权限试一下:
sudo cp repo /bin/
Re:  Buaaroid 2012-03-07 21:47发表  [回复]
回复Luoshengyang:把源代码放到共享文件里,应该可以解决VM磁盘空间限制的问题。

你可能感兴趣的:(在Ubuntu上下载、编译和安装Android最新源代码(包括网友问答))