Ubuntu18.04/20.04虚拟机编译Android4/5/6/7/8/9/10/11系统源码的常见问题解决方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Ubuntu18.04/20.04虚拟机编译Android4/5/6/7/8/9/10/11系统源码的常见问题解决方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3512字,纯文字阅读大概需要6分钟。
内容图文
Ubuntu20.04编译Android10/11系统源码的内存配置
Ubuntu18.04编译Android4/5/6/7/8/9系统源码的内存配置
问题1(Ubuntu20.04编译Android10/11系统源码)
ninja failed with: exit status 137
解决方案一
1.Android系统源码根目录的build/soong/java/config/config.go文件内定义了
pctx.StaticVariable("JavacHeapSize", "2048M")
,javaheap的大小与ubuntu18.04或ubuntu20.04系统的内存调度问题是有关联的,其中javacheap的值太小会被系统直接killed掉
2.所以修改一下javaheap的值,在编译前执行:
export MAVEN_OPTS="-Xms4096m -Xmx4096m"//配置为虚拟机内存值的差不多一半,可以根据虚拟机实际内存大小来配置具体大小
也可以通过设置环境变量解决该问题
sudo vim /etc/profile
或
sudo vim ~/.bashrc
source /etc/profile
或
source ~/.bashrc
3.必须清空out目录再编译
4.编译后要查看配置是否生效,可以查看此文件:
out/soong/build.ninja
在此文件内搜索JavacHeapSize,看此值是否为设置的值
解决方案二
sudo vim build/soong/java/config/config.go
或
sudo gedit build/soong/java/config/config.go
pctx.StaticVariable("JavacHeapSize",?"2048M") //把2048修改为4096关闭当前编译Terminal窗口,另新建一个Terminal窗口再编译即可,不需要删除out再编译
问题二(Ubuntu18.04编译Android4/5/6/7/8/9系统源码)
ninja: build stopped: subcommand failed
或者
GC overhead limit exceeded
解决方案一(执行命令:ulimit -c unlimited)
命令解释
ulimint -a 用来显示当前的各种用户进程限制
Linux对于每个用户,系统限制其最大进程数,为提高性能,可以根据设备资源情况,
设置个Linux用户的最大进程数,一些需要设置为无限制:
数据段长度无限制
ulimit -d unlimited
最大内存大小无限制
ulimit -m unlimited
堆栈大小无限制
ulimit -s unlimited
core文件大小无限制
ulimit -c unlimited
解决方案二(修改环境变量)
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
解决方案三(修改Jack配置文件)
sudo vim prebuilts/sdk/tools/jack-admin
或
sudo gedit prebuilts/sdk/tools/jack-admin
(1).修改prebuilts/sdk/tools/jack-admin文件,变量
JACK_SERVER_VM_ARGUMENTS,添加参数-Xmx4096M
JACK_SERVER_VM_ARGUMENTS="${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m}"
(2).修改prebuilts/sdk/tools/jack-admin文件,变量
JACK_SERVER_COMMAND,在-cp前添加-Xmx4096m(4096m为虚拟机内存大小的一半左右,根据所用的主机配置而定)
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME"
(3).修改prebuilts/sdk/tools/README-jack-server.md文件
JACK_SERVER_VM_ARGUMENTS="-Xmx2g -Dfile.encoding=UTF-8 -XX:+TieredCompilation" jack-admin start-server
修改为
JACK_SERVER_VM_ARGUMENTS="-Xmx4g -Dfile.encoding=UTF-8 -XX:+TieredCompilation" jack-admin start-server
其中-Xmx4096m或者-Xmx4g,表示使用的主机内存/虚拟机内存的一半,前面指的是虚拟机配置的内存大小是8G,当然如果配置的主机内存/虚拟机内存大,可以使用如下命令
./prebuilts/sdk/tools/jack-admin?stop-server
./prebuilts/sdk/tools/jack-admin start-server
解决方案四(修改环境变量)
sudo vim ~/.bashrc???????
export USE_CCACHE=1
export CCACHE_EXEC=/usr/bin/ccache
ccache -M 50G
export CCACHE_COMPRESS=1
export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096"
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m"
export LC_ALL=C
source ~/.bashrc???????
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server
Ubuntu20.04编译Android10/11系统源码
对移动安全、Android系统源码编译/开发(一键新机)感兴趣的可以关注公众号
内容总结
以上是互联网集市为您收集整理的Ubuntu18.04/20.04虚拟机编译Android4/5/6/7/8/9/10/11系统源码的常见问题解决方法全部内容,希望文章能够帮你解决Ubuntu18.04/20.04虚拟机编译Android4/5/6/7/8/9/10/11系统源码的常见问题解决方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。