2016-01-22 7 views
11

Sto cercando di creare il codice sorgente Android in ubuntu 15.10, ma ho ricevuto un errore. Ora voglio il tuo aiuto per costruire il codice sorgente di Android.Aumentare le dimensioni dell'heap mentre si crea il codice sorgente Android su Ubuntu 15.10

including ./tools/external/fat32lib/Android.mk ... 
Starting build with ninja 
ninja: Entering directory `.' 
[ 0% 1/21542] Ensure Jack server is installed and started 
Jack server already installed in "/home/smile/.jack-server" 
Server is already running 
[ 0% 2/21542] Building with Jack: out/target/common/obj/JAVA_LIBRARIES/core-all_intermediates/with-local/classes.dex 
FAILED: /bin/bash out/target/common/obj/JAVA_LIBRARIES/core-all_intermediates/with-local/classes.dex.rsp 
Java heap space 
Try increasing heap size with java option '-Xmx<size>' 
Warning: This may have produced partial or corrupted output. 
ninja: build stopped: subcommand failed. 
build/core/ninja.mk:146: recipe for target 'ninja_wrapper' failed 
make: *** [ninja_wrapper] Error 1 

#### make failed to build some targets (08:25 (mm:ss)) #### 

Poi corro "$ java -Xmx2048m" comando e ottengo alcune linee:

[email protected]:~/Android$ java -Xmx2048m 
Usage: java [-options] class [args...] 
      (to execute a class) 
    or java [-options] -jar jarfile [args...] 
      (to execute a jar file) 
where options include: 
    -d32  use a 32-bit data model if available 
    -d64  use a 64-bit data model if available 
    -server to select the "server" VM 
    -zero  to select the "zero" VM 
    -jamvm to select the "jamvm" VM 
    -avian to select the "avian" VM 
    -dcevm to select the "dcevm" VM 
        The default VM is server. 

    -cp <class search path of directories and zip/jar files> 
    -classpath <class search path of directories and zip/jar files> 
        A : separated list of directories, JAR archives, 
        and ZIP archives to search for class files. 
    -D<name>=<value> 
        set a system property 
    -verbose:[class|gc|jni] 
        enable verbose output 
    -version  print product version and exit 
    -version:<value> 
        require the specified version to run 
    -showversion print product version and continue 
    -jre-restrict-search | -no-jre-restrict-search 
        include/exclude user private JREs in the version search 
    -? -help  print this help message 
    -X   print help on non-standard options 
    -ea[:<packagename>...|:<classname>] 
    -enableassertions[:<packagename>...|:<classname>] 
        enable assertions with specified granularity 
    -da[:<packagename>...|:<classname>] 
    -disableassertions[:<packagename>...|:<classname>] 
        disable assertions with specified granularity 
    -esa | -enablesystemassertions 
        enable system assertions 
    -dsa | -disablesystemassertions 
        disable system assertions 
    -agentlib:<libname>[=<options>] 
        load native agent library <libname>, e.g. -agentlib:hprof 
        see also, -agentlib:jdwp=help and -agentlib:hprof=help 
    -agentpath:<pathname>[=<options>] 
        load native agent library by full pathname 
    -javaagent:<jarpath>[=<options>] 
        load Java programming language agent, see java.lang.instrument 
    -splash:<imagepath> 
        show splash screen with specified image 
See http://www.oracle.com/technetwork/java/javase/documentation/index.html for more details. 

Chi può aiutarmi a come aumentare dimensione heap?

Il vostro aiuto sarà molto appretiated mi

Grazie in anticipo.

[email protected]:~/Android$ java -version 
java version "1.7.0_91" 
OpenJDK Runtime Environment (IcedTea 2.6.3) (7u91-2.6.3-0ubuntu0.15.10.1) 
OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode) 

risposta

20

Ho appena avuto lo stesso problema.

Il problema è che la macchina virtuale che esegue il jack non ha memoria sufficiente.

Si può cercare di modificare i comandi della JVM:

JACK_VM_COMMAND=${JACK_VM_COMMAND:="java -Xmx4096m"} 

o diminuire il numero di compilazioni jack parallele

SERVER_NB_COMPILE=2 

in / file ~ .jack.

È possibile leggere jack documentation per i dettagli.

MODIFICA: Modifica file .jack non ha funzionato per me. Dopo aver scavato un po 'più a fondo ho scoperto che il jack server è stato avviato con lo script out/host/linux-x86/bin/jack-admin ed i suoi parametri possono essere passati con la variabile d'ambiente JACK_SERVER_VM_ARGUMENTS.

Quindi la mia soluzione era quella di impostare e riavviare il server presa prima di costruire AOSP:

export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m" 
out/host/linux-x86/bin/jack-admin kill-server 
out/host/linux-x86/bin/jack-admin start-server 
+1

funziona per me! Nota che i sorgenti di amministrazione di jack ~/.jack-settings, quindi dovrebbero essere un buon posto per memorizzare la variabile in modo permanente. – Per

4

Se si sta costruendo Android N quindi i file di configurazione Jack è cambiato. applica sopra le configurazioni suggerite seguendo la Guida alla transizione.

trovare la configurazione che si desidera modificare, individuare la posizione spostata da $HOME/.jack e modificarla.

Transizione dal server 1.1 (per esempio Marshmallow) al server 1.3 (per esempio N)

Il vecchio Jack server utilizzato un file di configurazione $HOME/.jack. Ora sostituisce sostituito da $HOME/.jack-settings e $HOME/.jack-server/config.properties.

Se non esistono questi nuovi file,

corsa jack-admin start-server e saranno creati.

Se si dispone di impostazioni personalizzate nel proprio $HOME/.jack, ecco come adattarle.

Fase 1

SERVER_PORT_SERVICE=XXXX Sostituire con SERVER_PORT_SERVICE=XXXX in $HOME/.jack-settings e jack.server.service.port=XXXX in $HOME/.jack-server/config.properties.

Fase 2

SERVER_PORT_ADMIN=YYYY Sostituire con SERVER_PORT_ADMIN=YYYY in $HOME/.jack-settings e jack.server.admin.port=YYYY in $HOME/.jack-server/config.properties.

Fase 3

SERVER_NB_COMPILE=N Sostituire con jack.server.max-service=N in $HOME/.jack-server/config.properties.

Impostazioni Extra

SERVER_TIMEOUT=ZZ è possibile sostituirli con jack.server.time-out=ZZ, ma consiglia di mantenere l'impostazione predefinita di “7200” (2 ore).

Altre impostazioni nel file di configurazione $HOME/.jack non devono essere copiate . Dovresti comunque conservare il tuo file di configurazione $HOME/.jack per il sul vecchio server Jack perché entrambe le versioni del server possono essere eseguite contemporaneamente su .

Tratto da Jack server , più su Compiling with Jack

3

jack_server_setup.mk sotto prebuilts \ SDK \ strumenti

ifneq ($(ANDROID_JACK_VM_ARGS),) 
jack_vm_args := $(ANDROID_JACK_VM_ARGS) 
else 
jack_vm_args := -Dfile.encoding=UTF-8 -XX:+TieredCompilation 
endif 
..... 
ifneq ($(dist_goal),) 
    $(hide) mkdir -p "$(DIST_DIR)/logs/jack/" 
    $(hide) JACK_SERVER_VM_ARGUMENTS="$(jack_vm_args) -Dcom.android.jack.server.log.file=$(abspath $(DIST_DIR))/logs/jack/jack-server-%u-%g.log" $(PRIVATE_JACK_ADMIN) start-server 2>&1 || exit 0 
else 
    $(hide) JACK_SERVER_VM_ARGUMENTS="$(jack_vm_args)" $(PRIVATE_JACK_ADMIN) start-server 2>&1 || exit 0 
endif 

Così possiamo esportare

ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g" 

di config args Jack. e quindi eseguire questo qui sotto:

./prebuilts/sdk/tools/jack-admin kill-server 
./prebuilts/sdk/tools/jack-admin start-server 
2

goto build/core/config.mk e il cambiamento dimensione heap in

APICHECK_COMMAND: = $ (APICHECK) -JXmx8g -j "classpath $ (APICHECK_CLASSPATH) "

quindi funzionerà correttamente.
Altre soluzioni non mi hanno aiutato.

0

Basta provare aggiungere

export ANDROID_JACK_VM_ARGS="-Xmx8192m -Xms512m -Dfile.encoding=UTF-8 -XX:+TieredCompilation" 

alla fine del .bashrc e riavviare Linux

Problemi correlati