在Ubuntu上构建Android的符号缺失符号

问题描述:

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

cat /proc/version

Linux version 2.6.38-8-generic ([email protected]) (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/ 

下面是在我的情况下删除了这些错误。最后一个有害的'/'。

不好:

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 
+1

终于做到了!谢谢! – Kostas 2012-09-25 18:01:36

+1

有趣..两者有何不同?带“/”,没有“/”。 – Whoami 2014-03-27 15:00:36

+1

这个。谢谢!我一直在努力解决这个问题,这工作! – Dirbaio 2014-09-23 11:48:57

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

+0

是的,我确实添加了JDK – kingston 2012-02-07 17:46:16

+0

JDK的版本是6?最好使用Ubuntu 10.04 64位进行构建。否则,你应该纠正一些文件为32位构建。 – Yury 2012-02-07 17:57:57

+0

随着64位版本的工作。当然我不知道是否还有其他问题 – kingston 2012-02-15 19:16:21

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

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

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

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

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

nope你需要它添加他bin目录到该路径 – 2014-12-11 17:02:31

为了解决这个问题的OSX,添加Java bin目录到PATH

出口PATH = /图书馆/的Java/JavaVirtualMachines/jdk1.7.0_51.jdk /内容/首页/斌:$ PATH

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

+0

对于优胜美地,正确的命令是: export PATH =/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/bin:$ PATH – seeARMS 2016-06-23 20:10:11

+0

我和优胜美地没有任何关系。这真的意味着你有不同的jdk版本。有没有正确的答案,但我会更新我的答案表明,以防万一。谢谢。 – 2016-06-27 16:55:18