zoukankan      html  css  js  c++  java
  • 编译Android源码

    编译android源码需要安装一些工具(Ubuntu12.10):

    $ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner" #安装jdk
    $ sudo apt-get update
    $ sudo apt-get install sun-java6-jdk
    $ sudo apt-get install git gnupg flex bison gperf build-essential 
      zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev 
      libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386
      libgl1-mesa-dev g++-multilib mingw32 tofrodos
      python-markdown libxml2-utils xsltproc zlib1g-dev:i386 #安装一些工具
    $ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
    $ export USE_CCACHE=1 #使用ccache
    

    下载源码:

    $ mkdir ~/bin #创建目录
    $ PATH=~/
    bin:$PATH #加入环境变量PATH $ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo #下载工具repo $ chmod a+x ~/bin/repo #赋执行权限 $ mkdir WORKING_DIRECTORY #创建工作目录 $ cd WORKING_DIRECTORY $ repo init -u https://android.googlesource.com/platform/manifest #checkout最新代码 或者使用下面的命令 $ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1 #checkout分支 $ repo sync #同步代码,这个时间比较长 

    android代码比较大,一般都有几G大小。下载android源码最痛苦的就是,你辛辛苦苦的下载配置完各种环境和工具,发现代码下载不了(被墙了)。我就遇到了这种情况。可以使用VPN或者代理工具来下载。我最终使用了GoAgent工具把源码下载了下来。GoAgent的使用可以参考:http://daemon369.github.io/network/2013/08/11/use-goagent/ 或者GoAgent官网:https://code.google.com/p/goagent/ 。 

    $ source build/envsetup.sh  #初始化一些环境变量
    $ lunch full-eng  #编译代码
    $ sudo make -j6  #编译代码
    

    编译完成后,运行模拟器:

    $ emulator #使用默认配置
    $ emulator -kernel ./prebuilt/android-arm/kernel/kernel-qemu -sysdir ./out/target/product/generic -system ./out/target/product/generic/system.img -data ./out/target/product/generic/userdata.img -ramdisk ./out/target/product/generic/ramdisk.img #指定使用的img文件
    

    注意:

    1.编译代码的过程中遇到了一些编译错误,在网上搜索,很多人给出了各种修改文件的方法。最终发现,其实是gcc和g++的版本的问题。我编译android2.3.3源码,把gcc和g++降级到4.4,就解决了很多问题:

    $ sudo apt-get install gcc-4.4 g++-4.4 gcc-multilib g++-4.4-multilib  #安装低版本gcc g++
    $ cd /usr/bin
    $ sudo rm gcc g++  #删除之前的链接文件
    $ sudo ln -s gcc-4.4 gcc  #建立链接
    $ sudo ln -s g++-4.4 g++
    

    2.遇到如下编译错误:

    host C: sqlite3 <= external/sqlite/dist/shell.c
    external/sqlite/dist/shell.c:42:32: error: readline/readline.h: No such file or directory
    external/sqlite/dist/shell.c:43:31: error: readline/history.h: No such file or directory 
    解决办法:
    dpkg   -l   | grep  readline
    找出库libreadline6-dev删除
    sudo apt-get remove libreadline6-dev

    3.安装了Android SDK或者NDK,设置的环境变量可能会影响编译,需要在$PATH中去除SDK和NDK的路径,同时去除环境变量:

    $ unset NDK_ROOT
    $ unset ANDROID_SDK_ROOT

    4.repo使用代理,设置环境变量:

    $ export HTTP_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>
    $
    export HTTPS_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>

    参考:

    http://blog.csdn.net/luoshengyang/article/details/6559955

    http://source.android.com/source/building.html

  • 相关阅读:
    Ubuntu 14.04 卸载通过源码安装的库
    Ubuntu 14.04 indigo 相关依赖
    Ubuntu 14.04 indigo 安装 cartographer 1.0.0
    Ubuntu 14.04 改变文件或者文件夹的拥有者
    安装cartographer遇到Unrecognized syntax identifier "proto3". This parser only recognizes "proto2"问题
    Unrecognized syntax identifier "proto3". This parser only recognizes "proto2". ”问题解决方法
    查看所有用户组,用户名
    1卸载ROS
    Ubuntu14.04 软件安装卸载
    Ubuntu14.04系统显示器不自动休眠修改
  • 原文地址:https://www.cnblogs.com/daemon369/p/3271861.html
Copyright © 2011-2022 走看看