关闭

android源码下载,编译及编译时遇到的错误整理

标签: android
755人阅读 评论(0) 收藏 举报
分类:

一.环境搭建
因为android的源码编译只支持linux和mac,所以无法在windows下编译.我的电脑也没有双系统,因此只有装一个虚拟机。我用的是VMware workstation 我放到了百度云https://pan.baidu.com/s/1jHSrB2A。下载好安装虚拟机时最好多分配点硬盘空间,尽量30G以上,运行内存也分配2G以上。配置好虚拟机以后就要下个系统,推荐是用ubuntu系统,这个直接百度搜一下就有了。
二、配置ubuntu系统环境
1.下载java jdk,因为我编译的android2.3.1的源码,所以只能下载 1.6的jdk。下载jdk和配置方法参考http://www.cnblogs.com/a2211009/p/4265225.html ,如果要下载1.6的将里面的7改成6就可以。
2.编译需要的依赖包下载,参考http://blog.csdn.net/banketree/article/details/9089827
三、下载android源码
我一开始想用官方的下载方法,奈何没有vpn一直连接不上,最后不得不从其他地方下载。
1.可以从github上下载http://www.it165.net/pro/html/201409/22577.html#viewSource但是下载下来的源码没有makfile文件无法编译。
2.从网盘下载我提供我的网盘下载链接,不过源码是2.3.1的,如果需要新版的就得自己去找了。https://pan.baidu.com/s/1slxl0ML
四、开始编译
做了好准备工作就开始编译源码,编译源码说难也不难,说简单也不简单。其实编译的命令非常简单只要通过终端进入到你存放源码的目录 执行make命令就开始编译了。难就难在编译的过程中有很多的问题需要解决。下面我就列出 我编译时遇到的问题。

  1. //如果有权限呗拒绝就调用下面的语句修改权限
    在源码目录下 直接chmod -R 777 *
  2. make: * [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/AaptAssets.o] Error 1
    解决:
    vi frameworks/base/tools/aapt/Android.mk
    在第31行增加:
    LOCAL_CFLAGS += -Wno-format-y2k -fpermissive
  3. make: * [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/AssetManager.o] Error 1
    解决:
    vi frameworks/base/libs/utils/Android.mk
    在第60行后面增加-fpermissive:
    LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -fpermissive
  4. make: * [out/target/common/obj/all-event-log-tags.txt] Error 126
    修改这个权限就好了build/tools/merge-event-log-tags.py
  5. make: * [out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/core/java/android/content/EventLogTags.java] Error 126
    修改这个权限就好了build/tools/java-event-log-tags.py: Permission denied
  6. make: * [out/host/linux-x86/obj/EXECUTABLES/grxmlcompile_intermediates/grxmlcompile.o] 错误 1
    或者 make: * [out/host/linux-x86/obj/EXECUTABLES/grxmlcompile_intermediates/grxmlcompile.o] Error 1
    解决办法:cd external/srec
    复制拷贝下面的命令到终端:
    wget “https://github.com/CyanogenMod/android_external_srec/commit/4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff
    patch -p1 < 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff
    rm -f 4d7ae7b79eda47e489669fbbe1f91ec501d42fb2.diff
    cd ../..

  7. make: * [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] 错误 1
    .make: * 正在等待未完成的任务….
    .true
    root@mc-virtual-machine:~/android/bin/android_source#
    解决方法:这就说明系统里有部分必须的软件未安装,通过apt-get install 安装即可。其中,zlib工具包名不是zlib,而是zlib1g-dev,即:
    sudo apt-get install zlib1g-dev
    可以完成安装。

  8. make: * [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] 错误 1
    make: * 正在等待未完成的任务….
    true
    root@mc-virtual-machine:~/android/bin/android_source
    解决方法:安装libncurses5-dev:i386则可以搞定~~ 如下:

apt-get install libncurses5-dev:i386

  1. make: * [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] 错误 127
    127的一般都是缺少库 这里下载 sudo apt-get install build-essential
  2. [out/host/linux-x86/obj/STATIC_LIBRARIES/libext4_utils_intermediates/output_file.o] Error 1
    /usr/include/zlib.h:34: fatal error: zconf.h: No such file or directory
    compilation terminated.
    make: * [out/host/linux-x86/obj/STATIC_LIBRARIES/libext4_utils_intermediates/output_file.o] Error 1
    make: * Waiting for unfinished jobs….
    由于系统的文件换了位置, 此时需要将 /usr/include/x86_64-linux-gnu/zconf.h 拷贝到上级目录,此时编译才通过
    将 zconf.h 拷贝到 /usr/include/ 目录即可
    cp /usr/include/x86_64-linux-gnu/zconf.h /usr/include/
  3. make: * [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1
    此处编译错误是由于ubuntu 11.10采用了GCC4.6.1导致的。
    解决方法:
    修改源码目录下/build/core/combo/HOST_linux-x86.mk文件:
    将以下语句
    HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
    修改为
    [html] view plain copy

  4. HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

  5. make: * [out/target/product/generic/obj/EXECUTABLES/BufferQueue_test_intermediates/BufferQueue_test.o] Error 1
    解决:
    其实是读取错文件了,你把正确文件拷贝过去就ok了
    cp system/media/opensles/libopensles/OpenSLESUT.h system/media/opensles/include/SLES/OpenSLESUT.h
    上面就是我在编译过程中遇到的问题,从开始编译靠结束用差不多5个小时,如果有遇到上面没有的问题直接不google找,尽量别去百度,浪费时间又找不到,google一搜一个准。
    五、启动模拟器
    到这一步就很简单了,首先配置一下环境 USER-NAME@MACHINE-NAME:~/AndroidexportPATH=PATH:~/Android/out/host/linux-x86/bin
    USER-NAME@MACHINE-NAME:~/AndroidexportANDROIDPRODUCTOUT= /Android/out/target/product/generic /Android/out/host/linuxx86/binemulator /Android/out/target/product/genericAndroidemulatorUSERNAME@MACHINENAME: /Android emulator
    如果出现SDL init failure, reason is: No available video device
    就安装sudo apt-get install libsdl1.2debian:i386。然后在运行就可以了

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:43266次
    • 积分:956
    • 等级:
    • 排名:千里之外
    • 原创:51篇
    • 转载:4篇
    • 译文:0篇
    • 评论:18条
    最新评论