2016-01-22 12 views
11

Tôi đang cố gắng xây dựng mã nguồn Android trong ubuntu 15.10, nhưng tôi gặp lỗi. Bây giờ tôi muốn sự giúp đỡ của bạn để xây dựng mã nguồn Android.Tăng kích thước heap trong khi xây dựng mã nguồn Android trên 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)) #### 

Sau đó, tôi chạy "$ java -Xmx2048m" lệnh và tôi nhận được một số dòng:

[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. 

Ai có thể giúp tôi làm thế nào để tăng kích thước heap?

Trợ giúp của bạn sẽ được rất nhiều appretiated cho tôi

Cảm ơn trước.

[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) 

Trả lời

20

Tôi vừa gặp sự cố tương tự.

Vấn đề là máy ảo chạy jack không có đủ bộ nhớ.

Bạn có thể thử để chỉnh sửa lệnh JVM:

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

hoặc giảm số lượng sưu jack song song

SERVER_NB_COMPILE=2 

trong ~/.jack tập tin.

Bạn có thể đọc jack documentation để biết chi tiết.

EDIT: Thay đổi tệp .jack không hoạt động đối với tôi. Sau khi đào sâu hơn một chút, tôi thấy rằng máy chủ jack được khởi động với tập lệnh out/host/linux-x86/bin/jack-admin và các tham số của nó có thể được chuyển qua biến môi trường JACK_SERVER_VM_ARGUMENTS.

Vì vậy, giải pháp của tôi là để thiết lập nó và khởi động lại máy chủ jack trước khi xây dựng 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

trình cho tôi! Lưu ý rằng các nguồn jack-admin ~/.jack-settings, do đó, đó phải là một nơi tốt để lưu trữ biến vĩnh viễn. – Per

4

Nếu bạn đang xây dựng Android N rồi config file Jack được thay đổi. áp dụng các cấu hình được đề xuất ở trên bằng cách làm theo Hướng dẫn chuyển đổi.

tìm cấu hình bạn muốn thay đổi, tìm cấu hình đã di chuyển từ $HOME/.jack và thay đổi nó ở đó.

Chuyển từ máy chủ 1.1 (ví dụ Marshmallow) đến máy chủ 1.3 (ví dụ N)

Máy chủ Jack cũ sử dụng một tập tin cấu hình $HOME/.jack. Hiện tại, đã có được thay thế bằng một số $HOME/.jack-settings$HOME/.jack-server/config.properties.

Nếu những tập tin mới không tồn tại,

chạy jack-admin start-server và họ sẽ được tạo ra.

Nếu bạn có cài đặt tùy chỉnh trong $HOME/.jack, dưới đây là cách điều chỉnh những cài đặt đó.

Bước 1

SERVER_PORT_SERVICE=XXXX Replace with SERVER_PORT_SERVICE=XXXX trong $HOME/.jack-settingsjack.server.service.port=XXXX trong $HOME/.jack-server/config.properties.

Bước 2

SERVER_PORT_ADMIN=YYYY Replace with SERVER_PORT_ADMIN=YYYY trong $HOME/.jack-settingsjack.server.admin.port=YYYY trong $HOME/.jack-server/config.properties.

Bước 3

SERVER_NB_COMPILE=N Replace with jack.server.max-service=N trong $HOME/.jack-server/config.properties.

Cài đặt thêm

SERVER_TIMEOUT=ZZ Bạn có thể thay thế với jack.server.time-out=ZZ, nhưng nó được khuyến khích để giữ các thiết lập mặc định của “7200” (2 giờ).

Các cài đặt khác trong tệp cấu hình $HOME/.jack không cần phải được sao chép . Bạn vẫn nên giữ tệp cấu hình $HOME/.jack cho máy chủ Jack cũ vì cả hai phiên bản máy chủ đều có thể chạy đồng thời .

Taken từ Jack server , thêm về Compiling with Jack

3

jack_server_setup.mk dưới prebuilts \ sdk \ tools

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 

Vì vậy, chúng ta có thể xuất khẩu

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

để cấu hình args jack. Và sau đó chạy dưới đây:

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

goto build/lõi/config.mk và thay đổi kích thước heap trong

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

thì nó sẽ hoạt động tốt.
Các giải pháp khác không giúp tôi.

0

Chỉ cần cố gắng thêm

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

đến hết .bashrc và khởi động lại Linux

Các vấn đề liên quan