2012-01-08 11 views
8

Ho seguito le istruzioni su source.android.com per creare il framework Android, ma quando eseguo il comando make ottengo molti errori. Sono in esecuzione una Ubuntu 11.04 virtualizzata a 32 bit su VMware con Windows Vista a 64 bit.Simboli mancanti per Android su Ubuntu

cat /proc/version

dice

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

ho sincronizzato tutto utilizzando:

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

e ho scelto il bersaglio pieno-engineering utilizzando:

lunch full-eng 

Questa è una lista parziale degli errori che ricevo:

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/ 

risposta

27

Di seguito sono stati eliminati questi errori nel mio caso. Un "/" estraneo offensivo alla fine.

male:

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

Buono:

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

Finalmente lo ha fatto! Grazie! – Kostas

+1

Interessante .. Come si differenziano entrambi? con "/" e senza "/". – Whoami

+1

QUESTO. GRAZIE! Ho cercato di aggiustarlo per ore, questo ha funzionato! – Dirbaio

0

Si consiglia di compilare i sorgenti Android utilizzando 64bit Ubuntu Linux. Ma non penso che questo sia un problema nel tuo caso. Mi sembra che il problema in JDK. Hai installato la versione JDK 6 sul tuo computer?

+0

Sì, ho aggiunto JDK – kingston

+0

La versione di JDK è 6? Ed è meglio usare Ubuntu 10.04 a 64 bit per la costruzione.In caso contrario, è necessario correggere alcuni file da compilare per 32 bit. – Yury

+0

Con la versione per 64 bit ha funzionato. Certo che non so se ci fossero altri problemi – kingston

0

Mi sono imbattuto anche in questo, e il problema era che mi mancavano alcuni pacchetti di Ubuntu. Una volta che ho seguito le istruzioni in http://source.android.com/source/initializing.html per installare i pacchetti, le cose hanno funzionato bene. È confuso poiché l'errore è in Java, ma il problema è nel sistema operativo.

5

Un'altra causa di questo errore è che se si utilizza qualcosa come jenv per gestire più ambienti Java. Gli strumenti di build di Android, per impostazione predefinita, cercano tools.jar in relazione alla posizione del file binario di javac. Se stai usando jenv (o qualsiasi altro strumento che dirotta javac), questo non funzionerà.

Tuttavia, è possibile impostare la variabile di ambiente ANDROID_JAVA_HOME in modo che punti al JDK "reale", nel qual caso gli strumenti di compilazione verranno visualizzati in $ ANDROID_JAVA_HOME/lib/tools.jar.

1

Quanto segue è stata la mia correzione in OSX. Devi vedere quali JVM hai e impostarle in modo appropriato.

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

no se ne hai bisogno aggiungi la directory bin a quel PATH –

9

Per fissare questo su OSX, aggiungere la directory bin Java per PATH

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

PS: La cartella jdk (jdk.1.7.0_51.jdk) potrebbe essere diversa per la gente in quanto dipende dalla versione su jdk installata. Basta usare la cartella jdk che hai installato. Il percorso per bin è lo stesso.

+0

Per Yosemite, il comando corretto è ora: export PATH =/Libreria/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/bin: $ PATH – seeARMS

+0

Non ho nulla a che fare con Yosemite. Questo significa solo che hai una versione jdk diversa. Non ci sono risposte giuste ma aggiornerò la mia risposta per indicarlo, per ogni evenienza. Grazie. –