zoukankan      html  css  js  c++  java
  • Ubuntu16.04编译Android6.0/cm13.0教程及相关错误解决办法

    一、必备工作

    1、安装依赖库

    sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib git flex bison gperf build-essential libncurses5-dev:i386 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev libsdl1.2-dev libesd0-dev git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4

    2、安装openjdk 7

    ubuntu 14.04直接:

    sudo apt-get install openjdk-7-jdk

    Ubuntu 16.04没有OpenJDK7的源,因此在16.04上安装OpenJDK7需要执行下面的命令:

    sudo add-apt-repository ppa:openjdk-r/ppa 
    sudo apt-get update
    sudo apt-get install openjdk-7-jdk 

    配置OpenJDK.打开/etc/profile文件:

    sudo gedit /etc/profile

    在末尾追加下面代码:

    export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
    export JRE_HOME=${JAVA_HOME}/jre 
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 
    export PATH=${JAVA_HOME}/bin:$PATH

    修改了/etc/profile文件需要重启才能生效,但使用下面命令可以在不重启的情况下在当前bash环境生效:

    source /etc/profile

    检查OpenJDK配置是否正确:

    java -version

    3、修改源码

    修改 mydroid/art/build/Android.common_build.mk 文件,定位到75行,将下面的代码:

    ifneq ($(WITHOUT_HOST_CLANG),true)

    改为:

    ifeq ($(WITHOUT_HOST_CLANG),false)

    如果不修改这里,会遇到一个比较棘手的编译错误,修改的目的是把CLANG这个编译选项关掉,详见后面的编译记录,百度搜狗都无解,这个错误只会在Ubuntu16.04上遇到,Ubuntu14.04则不存在这个问题,解决这个编译错误花费一天时间,还好咱英语好,在歪果人的论坛上看了几篇帖子,终于搞定了。这里顺便说一下小技巧: 
    遇到编译错误,请把error后面的错误信息全部复制,然后用搜狗搜英文网页,不要用百度那个渣渣

    二、开始编译

    1、在 .bashrc文件末尾添加:export USE_CCACHE = 1

    echo export USE_CCACHE=1 >> ~/.bashrc

    2、为了提高编译效率,设置编译器高速缓存:

    prebuilts/misc/linux-x86/ccache/ccache -M 50G

    3、接着导入编译Android源码所需的环境变量和其它参数:

    source build/envsetup.sh

    4、 运行lunch命令选择编译目标

    5、开始编译,执行make -j8, 8为同时编译的线程数,一般google推荐这个数字为2倍的cpu个数再加上2,比如4核,就是10。博主使用的是8:

    make -j8
    #或者
    brunch cm_codename-userdebug

    关于cpu个数,可以用下面命令查看:

    cat  /proc/cpuinfo

    好了,开始编译了,接下来就是不断error,不断修复,继续编译的过程,下面记录常见错误

    三、错误记录与解决办法

    1、编译大坑,依赖库问题

    仔细看错误:

    clang: error: linker command failed with exit code

    其实这个是系统使用clang编辑器报的错,百度了一下,解决方法一般是将art/build/Android.common_build.mk文件ifneq ($(WITHOUT_HOST_CLANG),true)改为ifeq ($(WITHOUT_HOST_CLANG),false) 

    然而纸上得来终觉浅,绝知此事要躬行,因为,这并没有什么卵用,至少现在没有卵用。

    抱着反正无聊试一试的想法,把上面这篇帖子中的依赖一通复制:

    sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4

    然后make clean,重新再来。呵呵,这个错误是终于编过去了。

    2、CLANG错误,编译报错recipe for target 'out/host/linux-x86/obj/lib/libart.so' failed 

    解决这个错误,又花费一番力气,哈哈,这个时候找到解决方法了,再修改art/build/Android.common_build.mk文件,将

    ifneq ($(WITHOUT_HOST_CLANG),true)

    改为:

    ifeq ($(WITHOUT_HOST_CLANG),false)

    重新编译,解决问题。

    3、中文路径,坑。 

    解决办法:将中文路径改为英文即可。

    4、编译报错 ERROR:Cannot launch Jack Server   解决方法

    如果遇到jack编译错误,可以把$HOME/.jack中的配置文件中的SERVER=true设成false,不用jack,jack现在还不稳定。
  • 相关阅读:
    批量删除.svn文件夹、.svn文件
    Windows 7下Git SSH 创建Key的步骤
    Git:本地项目与远程仓库的git/clone
    git解决二进制文件冲突
    git设置mergetool可视化工具
    redhat7.2配置yum源
    project2016安装与破解
    strace 使用案例
    运维老鸟教你安装centos6.5如何选择安装包
    CSS限制
  • 原文地址:https://www.cnblogs.com/dinphy/p/5840709.html
Copyright © 2011-2022 走看看