zoukankan      html  css  js  c++  java
  • android7.0 编译问题及解决【转】

    本文转载自:http://blog.csdn.net/zhangmingbao2016/article/details/52699182

    注意:Linux操作系统上编译Android 7.0必须使用open-jdk,mac os才可以使用Oraclejdk,我的是ubuntu16.04,下面我将我遇到的问题及解决办法做一个陈述,仅供参考:

           1、正常的编译三部曲:

                1)source build/envsetup.sh

                2)lunch 1

                3)make -j32(-j32表示是开启32个线程同时编译,视个人电脑配置而定,我的笔记本8G内存,i5的处理器,256G的固态硬盘一般开10个线程,即make -j10,线程数是2的倍数)

    注:android 7.0编译不需要执行make update-api,当然执行了也不会错

            我遇到的问题:

                 1)问题:电脑安装的open-jdk 1.7,但是没有配置环境变量,编译源码时检测不到

                 原因:在build/envsetup.sh文件中,函数set_java_home()是这样的:

    [plain] view plain copy
     
     print?
    1. function set_java_home() {  
    2.     # Clear the existing JAVA_HOME value if we set it ourselves, so that  
    3.     # we can reset it later, depending on the version of java the build  
    4.     # system needs.  
    5.     #  
    6.     # If we don't do this, the JAVA_HOME value set by the first call to  
    7.     # build/envsetup.sh will persist forever.  
    8.         #export LEGACY_USE_JAVA7=1  
    9.     if [ -n "$ANDROID_SET_JAVA_HOME" ]; then  
    10.  export JAVA_HOME=""  
    11.     fi  
    12.   
    13.     if [ ! "$JAVA_HOME" ]; then  
    14.       <span style="color:#FF0000;">if [ -n "$LEGACY_USE_JAVA7" ]; then </span>  
    15.         echo Warning: Support for JDK 7 will be dropped. Switch to JDK 8.  
    16.         case `uname -s` in  
    17.             Darwin)  
    18.                 export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)  
    19.                 ;;  
    20.             *)  
    21.                 export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64  
    22.                 ;;  
    23.         esac  
    24.       else  
    25.         case `uname -s` in  
    26.             Darwin)  
    27.                 export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)  
    28.                 ;;  
    29.             *)  
    30.                 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64  
    31.                 ;;  
    32.         esac  
    33.   
    34.       fi  
    35.       # Keep track of the fact that we set JAVA_HOME ourselves, so that  
    36.       # we can change it on the next envsetup.sh, if required.  
    37.       export ANDROID_SET_JAVA_HOME=true  
    38.     fi  
    39. }  

    红色代码的意思是:如果LEGACY_USE_JAVA7不为空,JAVA_HOME就设置为java7的路径,由于LEGACY_USE_JAVA7我们没有赋值,所以编译时系统只会去找java8的路径,解决办法就是在判断之前加上:exportLEGACY_USE_JAVA7:=1(为何申明成export,因为在build/core/main.mk中进行编译环境检测时也会用到这个变量,有兴趣可以去看看)
    ,这样就可以通过编译环境检测环节,我在后边还遇到一个错误:javac:invalide source release:1.8(希望你没遇到),至今未解决(如果你解决了,欢迎分享,在set_java_home()中有一个警告:warning:Support for JDK 7 will be dropped.Switch to JDK 8,不知是否是这个原因),我就老老实实的安装了open-jdk 1.8,之后还是遇到了问题,见2)。

    2)问题:locale: Cannot set LC_ALL to default locale: No such file or directory

    原因:系统bug,在终端输入locale然后回车,输出如下:

    locale: Cannot set LC_ALL to default locale: No such file or directory
    LANG=en_US.UTF-8
    LANGUAGE=
    LC_CTYPE=UTF-8
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_PAPER="en_US.UTF-8"
    LC_NAME="en_US.UTF-8"
    LC_ADDRESS="en_US.UTF-8"
    LC_TELEPHONE="en_US.UTF-8"
    LC_MEASUREMENT="en_US.UTF-8"
    LC_IDENTIFICATION="en_US.UTF-8"
    LC_ALL=

    解决办法:编译之前,在终端输入export LC_ALL ="en_US.UTF-8"即可,当然以可以在envsetup.sh中添加(已经证明使可以的)。

  • 相关阅读:
    51Nod 1239 欧拉函数之和
    51Nod 1244 莫比乌斯函数之和
    BZOJ 4805: 欧拉函数求和
    BZOJ 3944: Sum
    3.25阅读摘抄
    生活整洁之道
    1064. 朋友数(20)
    1063. 计算谱半径(20)
    1061. 判断题(15)
    1062. 最简分数(20)
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/7172348.html
Copyright © 2011-2022 走看看