• android 4.0.3最新源码下载编译


    最新的android4.0源代码公布以后,相信很多人和我一样都跃跃欲试,其实4.0的代码下载和编译和以前的版本差不多,但是有一些小的差别,写下来供不明真相的新手来参考

    首先,开发环境,google建议在ubuntu10.0.4下,并且最好是64位,既然是为了工作和学习,就尽量按照官方要求的来吧。

    Python 2.5 -- 2.7  ubuntu10.0.4已经默认安装了,所以不需要安装,其他环境需要安装

    JDK 6   编译4.0需要jdk 6 ,sdk的编译需要jdk 5

    Git 1.7 or newer

    如果你的ubuntu是32位的,请在源码下载后编译前按以下步骤修改:

    下载完源码后,修改下面四个文件:external/clearsilver/cgi/Android.mk
                                                                external/clearsilver/java-jni/Android.mk
                                                               external/clearsilver/util/Android.mk
                                                              external/clearsilver/cs/Android.mk

    将其中的 LOCAL_CFLAGS += –m64
                    LOCAL_LDFLAGS += –m64

    修改为    LOCAL_CFLAGS += –m32
                   LOCAL_LDFLAGS += –m32

    在build/core/main.mk

    找到  ifneq (64,$(findstring 64,$(build_arch)))

    将其修改为 ifneq (i686,$(findstring i686,$(build_arch)))

    如果你装的ubuntu是最新的11.04打头的,由于内核版本的bug可能会在编译的最后出现头文件丢失的错误比如:image_thumb,请按照以下方法修复:

    repo download platform/external/qemu 22776/1  如果你是10.0.4就不要做多余的事情了,如果你修复了,编译出的版本可能会出现黑屏现象进入不了系统,切记!

    编译的环境不同,碰到的问题也会千奇百怪,如果你编译出问题了请养成google和百度的习惯

      1:jdk的安装比较简单,就不做介绍了

      2:安装依赖库:

            64-bit:

    $ sudo apt-get install git-core gnupg flex bison gperf build-essential \
      zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
      x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
      libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
      libxml2-utils xsltproc
    32-bit
    $ sudo apt-get install git-core gnupg flex bison gperf build-essential \
      zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev \
      libx11-dev libreadline6-dev libgl1-mesa-dev tofrodos python-markdown \
      libxml2-utils xsltproc

         On Ubuntu 10.10:

        $ sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

         On Ubuntu 11.10:

        $ sudo apt-get install libx11-dev:i386
     3:下载Repo
    $ mkdir ~/bin $ PATH=~/bin:$PATH
    $ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo $ chmod a+x ~/bin/repo

    4: 创建源码目录:

    $ mkdir ANDROID_SOURCE
    $ cd ANDROID_SOURCE
    5: 获取git上的android源码版本
    $ repo init -u https://android.googlesource.com/platform/manifest
    我们下载最新版
    $ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.3_r1
    此时需要你填写用户名和email
    image
    
    
    填写后即可执行同步命令
    6:下载源码
    $ repo sync
    可加参数: -jx x代表开启多少个线程来下载源码
    源码+repo  一共13G左右(因为repo会自动执行check out 命令)
    如果中间出错或者网络不稳定,可以重新初始化repo,用同一个email即可实现本地git库和服务器git库的同步
    
    
    
    
    编译源码

    下载完源码后进入源码主目录
    1 :执行:
    $ source build/envsetup.sh
    souce命令执行的是源码包build目录下的envsetup文件
    image
    可以看出这个文件里定义了很多函数供编译使用
    function help()
    function get_abs_build_var()
    function get_build_var()
    function check_product()
    function check_variant()
    function setpaths()
    function printconfig()
    function set_stuff_for_environment()
    function set_sequence_number()
    function settitle()
    function choosetype()
    function chooseproduct()
    function choosevariant()
    function tapas()
    function choosecombo()
    function print_lunch_menu()
    function lunch()
    function gettop
    function m()
    function findmakefile()
    function mm()
    function mmm()
    function croot()
    function pid()
    function gdbclient()
    function jgrep()
    function cgrep()
    function resgrep()
    function getprebuilt
    function tracedmdump()
    function runhat()
    function getbugreports()
    function startviewserver()
    function stopviewserver()
    function isviewserverstarted()
    function smoketest()
    function runtest()
    function runtest_py()
    function godir ()

    2:选择一个target
    $ lunch full-eng
    image
    我们编译后在模拟器中运行,所以选择full
    image
    我们选择最大的权限,也就是root后的版本,所以选择eng
    3:编译源码
    $ make -j4
    过程大概3小时
    编译完后在源码目录下会生成out文件夹如图
    image
    好了,可以检验以下我们编译的源码是否正常运行了
    $ emulator
    如果提示找不到命令,请初始化环境
    $ source build/envsetup.sh
    $ lunch full-eng
    image
     
    ok,android源码顺利完成,明天进行内核的编译



    
    
    
    
    
    
    
    
    
    




    
    
    
    
    
    
  • 相关阅读:
    万维网
    MySQL客户端输出窗口显示中文乱码问题解决办法
    mysql数据库delete数据时不支持表别名
    Java 实现在固定区间内随机生成整数
    【面试】MySQL 中NULL和空值的区别?
    一个因MySQL大小写敏感导致的问题
    windows查看服务的状态
    不就是Select Count语句吗,竟然能被面试官虐的体无完肤!
    Java 代码的精优化
    java服务宕机原因查询
  • 原文地址:https://www.cnblogs.com/jqyp/p/2369291.html
Copyright © 2020-2023  润新知