现在的位置: 首页 > 综合 > 正文

android源码下载编译

2018年04月22日 ⁄ 综合 ⁄ 共 2820字 ⁄ 字号 评论关闭
具体的repo工作流程可以参考:
http://source.android.com/source/version-control.html

1.在使用repo sync的时候,遇到如下错误:

*Initializing project platform/bionic ...
fatal: '../platform/bionic.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
error: Cannot fetch platform/bionic*

说明你的repo好久没有更新了,解决办法就是更新repo工具,然后重新执行。

2.老提示406和443错误

error: Failed connect to android.googlesource.com:443;Connection refused while accessinghttps://android.googlesource.com/a/platform/frameworks/base/info/refs

fatal: HTTP request failed

error: Cannot fetch platform/tools/motodev

error: Cannot fetch platform/frameworks/base

error: Cannot fetch platform/prebuilts/sdk

 

error: Exited sync due to fetch errors

等错误信息。

解决方法:编辑/etc/hosts文件

 $ vim /etc/hosts

增加下面内容,保存

74.125.31.82 android.googlesource.com

74.125.31.82 www.googlesource.com

203.208.46.172 cache.pack.google.com

59.24.3.173        cache.pack.google.com

然后重新输入

$ repo sync

注:上述地址可能随时有变,需要通ping来测试,能通的写进hosts才有效果

3java版本切换

ubuntu12.04可以通过添加如下源来下载sun java

 
deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse

方法:

1
sudo gedit /etc/apt/sources.list

在ubuntu12.04编译低版本的android是需要使用java1.5的,而ubuntu12.04安装的默认版本是java1.6

所以需要将其更改为1.5。首先通过apt-get安装好java1.5(参考source.android.com)。然后使用命令

  update-alternatives --config java
  update-alternatives --config javac

来进行切换。切换完毕后可使用java -version来确认下。

4.make

make流程参考:http://source.android.com/source/building.html

在make过程中可能会碰到下列问题:

编译出错1

frameworks/base/libs/utils/RefBase.cpp: 在成员函数‘void android::RefBase::weakref_type::trackMe(bool, bool)’中:
frameworks/base/libs/utils/RefBase.cpp:507:67: 错误: 将‘const android::RefBase::weakref_impl’作为‘void android::RefBase::weakref_impl::trackMe(bool, bool)’的‘this’实参时丢弃了类型限定 [-fpermissive]
make[1]: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] 错误 1

解决办法:编辑frameworks/base/libs/utils/Android.mk文件,修改

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -fpermissive

编译出错2

<命令行>:0:0: 错误: “_FORTIFY_SOURCE”重定义 [-Werror]
<built-in>:0:0: 附注: 这是先前定义的位置
cc1plus: all warnings being treated as errors
make[1]: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] 错误 1

修改build/core/combo/HOST_linux-x86.mk line 61:

HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
改为
HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

编译出错3

        make: *** [out/target/common/docs/doc-comment-check-timestamp] Error 45

  这是由于clearsilver在编译时如果检测到使用Java JDK 6,就使用64位编译,因为Google的一个员工更新了几个文件。这里可以看到详细的修改记录:http://android.git.kernel.org/?p=platform/external/clearsilver.git;a=commitdiff;h=d36910a8110d8377b22301274d2b5131a732a72b

  修改这几个文件,该回到32位编译环境即可:

  external/clearsilver/cgi/Android.mk

  external/clearsilver/java-jni/Android.mk

  external/clearsilver/util/Android.mk

  external/clearsilver/cs/Android.mk

  把编译选项-m64改成-m32即可

4.emulator不能使用的问题

需要修改环境变量,可将android源码开始的

out/host/linux-x86/bin

添加到

/etc/environment中

然后在/etc/environment中添加

export ANDROID_PRODUCT_OUT="~/android/out/target/product/generic"

抱歉!评论已关闭.