android L 需要升级jdk7 才能正确编译

本文介绍在Ubuntu 12.04环境下安装并切换Java版本的方法,包括使用命令行安装OpenJDK 7,查看已安装的Java版本,以及通过修改环境变量来切换不同版本的Java。
L代码下载;
需要openjdk-7-jre openjdk-7-jdk
 
方法:
Ubuntu1204下安装
sudo apt-get install openjdk-7-jre openjdk-7-jdk
 
查看本地安装的java版本
yangliwei@yangliwei-ubuntu:/usr/lib/jvm$ sudo update-java-alternatives -l
java-1.7.0-openjdk-amd64 1051 /usr/lib/jvm/java-1.7.0-openjdk-amd64
java-6-sun 63 /usr/lib/jvm/java-6-sun
 
在两个版本之间切换
sudo update-java-alternatives -s java-6-sun
sudo update-java-alternatives -s java-1.7.0-openjdk-amd64

修改根目录下.bashrc文件,
export JAVA_HOME=/usr/lib/java-6-sun/jdk1.6.0_35
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
把java6的环境变量改为jdk7的
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

然后需要重启cmd窗口才能生效编译,否则编译可能提示java版本错误

<think>嗯,用户遇到了Android编译时前端命令失败,退出代码139的问题。我需要先了解这个错误的具体原因。退出代码139通常和内存问题有关,比如内存不足或无效的内存访问。可能的原因包括系统内存不足、编译进程被OOM Killer终止,或者存在内存泄漏的代码。 首先,我应该建议用户检查系统内存。使用free -h或top命令查看内存使用情况。如果内存不足,可以尝试增加交换空间,或者关闭其他占用内存的程序。另外,调整Gradle的堆大小设置也是一个办法,比如在gradle.properties中添加org.gradle.jvmargs=-Xmx4096m。 接下来,检查项目配置是否正确。NDK版本不兼容或者CMake配置错误可能导致内存问题。用户应该确认NDK版本是否符合项目要求,并检查CMakeLists.txt中的配置是否有误。 清理和重建项目也很重要。有时候临时文件会导致问题,执行./gradlew clean清除缓存,然后重新构建。如果问题依旧,可以尝试升级Android Studio和Gradle到最新版本,修复已知的兼容性问题。 如果这些步骤没用,可能需要分析崩溃日志。通过dmesg | grep -i kill查看是否有被OOM Killer终止的进程。或者使用Android Studio的Memory Profiler检查内存泄漏。另外,增加系统日志输出,比如在gradle命令后加上--stacktrace --info,获取更多信息。 最后,如果问题无法解决,建议用户提供更多上下文,比如完整的错误日志和系统配置,以便进一步排查。</think>### Android编译前端命令失败(退出代码139)解决方案 退出代码139通常由**内存访问越界或无效内存地址**引起,在Android编译中多与JVM内存分配、Gradle配置或NDK编译相关。以下是分步解决方案: --- #### 一、检查系统内存和进程限制 1. **确认物理内存和交换空间** 使用命令查看内存状态: ```bash free -h # 查看剩余内存和交换分区 ``` 若内存不足,可通过以下方式解决: - 增加交换空间: ```bash sudo fallocate -l 4G /swapfile && sudo chmod 600 /swapfile sudo mkswap /swapfile && sudo swapon /swapfile ``` - 关闭其他占用内存的程序 2. **检查OOM Killer记录** 通过内核日志确认是否因内存不足终止进程: ```bash dmesg | grep -i "killed process" ``` --- #### 二、调整Gradle/JVM内存配置 在`gradle.properties`中增加堆内存限制(根据机器配置调整): ```properties org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=1024m ``` > 注意:Android Studio 2023.1+默认使用JDK 17,需确保参数兼容性[^1] --- #### 三、排查NDK/C++代码问题 1. **检查NDK版本兼容性** 在`app/build.gradle`中确认NDK版本: ```gradle android { ndkVersion "25.2.9519653" // 推荐使用最新稳定版 } ``` 2. **检查CMake配置** 在`CMakeLists.txt`中开启地址消毒检测: ```cmake add_compile_options(-fsanitize=address) add_link_options(-fsanitize=address) ``` --- #### 四、清理并重建项目 ```bash # 清理Gradle缓存 ./gradlew clean # 删除构建目录 rm -rf app/build/ # 完整重建(添加--stacktrace获取详细日志) ./gradlew assembleDebug --stacktrace ``` --- #### 五、其他优化措施 | 措施 | 命令/配置 | 作用 | |------|----------|------| | 禁用并行编译 | `org.gradle.parallel=false` | 避免多线程内存竞争 | | 关闭Prefab | `android.enablePrefab=false` | 解决第三方库冲突 | | 限制资源压缩线程 | `android.numberOfThreads=2` | 降低内存峰值 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值