【问题标题】:Missing symbols building Android on Ubuntu在 Ubuntu 上构建 Android 时缺少符号
【发布时间】:2012-02-05 12:29:54
【问题描述】:

我按照source.android.com 上的说明构建了Android 框架,但是当我运行make 命令时出现很多错误。我在 64 位 Windows Vista 下的 vmware 上运行虚拟化的 32 位 Ubuntu 11.04。

cat /proc/version

Linux version 2.6.38-8-generic (buildd@vernadsky) (gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu3) ) #42-Ubuntu SMP Mon Apr 11 03:31:50 UTC 2011

我已经通过以下方式同步了所有内容:

repo init -u https://android.googlesource.com/platform/manifest
repo sync

我选择了完整的工程目标:

lunch full-eng

这是我得到的错误的部分列表:

PLATFORM_VERSION_CODENAME=AOSP
PLATFORM_VERSION=4.0.3.0.2.0.1.0
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=OPENMASTER
OUT_DIR=out

/bin/bash: line 0: cd: cts/tools/cts-native-xml-generator/src/res: No such file or directory
host Java: doclava (out/host/common/obj/JAVA_LIBRARIES/doclava_intermediates/classes)
external/doclava/src/com/google/doclava/ClassInfo.java:20: package com.sun.javadoc does not exist
import com.sun.javadoc.ClassDoc;
                      ^
external/doclava/src/com/google/doclava/ClassInfo.java:62: cannot find symbol
symbol  : class ClassDoc
location: class com.google.doclava.ClassInfo
  public ClassInfo(ClassDoc cl, String rawCommentText, SourcePositionInfo position,
                   ^
external/doclava/src/com/google/doclava/PackageInfo.java:21: package com.sun.javadoc does not exist
import com.sun.javadoc.*;
^
external/doclava/src/com/google/doclava/ClassInfo.java:1406: cannot find symbol
symbol  : class ClassDoc
location: class com.google.doclava.ClassInfo
  private ClassDoc mClass;
          ^
external/doclava/src/com/google/doclava/PackageInfo.java:33: cannot find symbol
symbol  : class PackageDoc
location: class com.google.doclava.PackageInfo
  public PackageInfo(PackageDoc pkg, String name, SourcePositionInfo position) {
                     ^
external/doclava/src/com/google/doclava/PackageInfo.java:185: cannot find symbol
symbol  : class PackageDoc
location: class com.google.doclava.PackageInfo
  private PackageDoc mPackage;
          ^
external/doclava/src/com/google/doclava/apicheck/XmlApiFile.java:28: package com.sun.javadoc does not exist
import com.sun.javadoc.ClassDoc;
                      ^
external/doclava/src/com/google/doclava/Converter.java:19: package com.sun.javadoc does not exist
import com.sun.javadoc.*;
^
external/doclava/

【问题讨论】:

    标签: android frameworks build android-source


    【解决方案1】:

    以下是在我的案例中消除这些错误的原因。结尾有一个令人讨厌的无关“/”。

    不好:

    export PATH=/home/rev/BIN/jdk-6u34/jdk1.6.0_34/bin/:$PATH
    

    好:

    export PATH=/home/rev/BIN/jdk-6u34/jdk1.6.0_34/bin:$PATH
    

    【讨论】:

    • 有趣..两者有何不同?带“/”,不带“/”。
    • 这个。谢谢!我已经尝试解决这个问题好几个小时了,它成功了!
    • 感谢它可以在 OS X 上运行,就像 Sid Sarasvati 提到的一样。为什么它可以解决问题?这是否使编译器可以访问 tools.jar? stackoverflow.com/questions/4797079/…
    【解决方案2】:

    要在 OSX 上解决此问题,请将 Java bin 目录添加到 PATH

    导出 PATH=/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin:$PATH

    PS:jdk 文件夹(jdk.1.7.0_51.jdk)对于人们来说可能会有所不同,因为它取决于您安装的 jdk 上的版本。只需使用您已安装的 jdk 文件夹即可。 bin 的路径是相同的。

    【讨论】:

    • 对于 Yosemite,正确的命令现在是:export PATH=/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/bin:$PATH
    • 我与优胜美地无关。这真的只是意味着你有一个不同的 jdk 版本。没有正确的答案,但我会更新我的答案以表明这一点,以防万一。谢谢。
    【解决方案3】:

    此错误的另一个原因是您使用jenv 之类的东西来管理多个Java 环境。默认情况下,Android 构建工具会搜索相对于 javac 二进制文件位置的 tools.jar。如果您使用 jenv(或任何其他劫持 javac 的工具),这将不起作用。

    但是,您可以将环境变量 ANDROID_JAVA_HOME 设置为指向您的“真实”JDK,在这种情况下,构建工具将在 $ANDROID_JAVA_HOME/lib/tools.jar 中查找。

    【讨论】:

      【解决方案4】:

      以下是我在 OSX 中的修复。您必须查看您拥有的 JVM 并进行适当的设置。

      export ANDROID_JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
      

      【讨论】:

        【解决方案5】:

        建议使用 64 位 Ubuntu Linux 构建 Android 源代码。但我不认为这对你来说是个问题。在我看来,JDK中的问题。你的机器上安装了JDK 6 版本吗?

        【讨论】:

        • JDK的版本是6?并且最好使用 Ubuntu 10.04 64bit 进行构建。否则,您应该更正一些要为 32 位构建的文件。
        • 使用 64 位的版本可以正常工作。当然不知道有没有其他问题
        【解决方案6】:

        我也遇到了这个问题,问题是我缺少一些 Ubuntu 软件包。一旦我按照http://source.android.com/source/initializing.html 中的说明安装软件包,一切正常。 这很令人困惑,因为错误出在 Java 中,但问题出在操作系统中。

        【讨论】:

          【解决方案7】:

          我终于用 AOPS 完成了我的项目

          上面提到的[doclava]有一个错误

          我检查了很多信息而不是添加了

          导出 ANDROID_JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home

          祝你好运……

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-10-29
            • 2013-12-23
            • 1970-01-01
            • 2013-01-28
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多