• 编译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

  • 相关阅读:
    [POI2005]A Journey to Mars 单调队列
    滑动窗口 单调队列
    逆序对 模拟贪心
    迷宫 dfs爆搜
    [Usaco2019 Feb]The Great Revegetation
    [Usaco2007 Dec]挑剔的美食家
    [HNOI2004]宠物收养所
    bzoj2639 矩形计算
    [Ahoi2013]作业
    Gty的二逼妹子序列
  • 原文地址:https://www.cnblogs.com/daemon369/p/3271861.html
Copyright © 2020-2023  润新知