windows10 编译openjdk8及坑

本文详细记录了在Windows 10环境下安装和配置VS2010、Cygwin、Freetype、JDK等工具,以及编译OpenJDK过程中遇到的坑和解决方案,包括环境配置、编译步骤和内存占用问题的处理。

我只试过win10下编译,踩到的坑也不少。简单记录一下,有可能某些没有截图。

1.准备安装或者解压工具

一下几款工具已经放到网盘,整套都是我编译时期用过的。省去自己下载的麻烦和不兼容问题。

① 安装 vs 2010 英文版

用中文版的几乎都翻车了。安装时,只需要c++功能。

注意坑 : vs安装路径不要有空格,不要有中文,默认安装路径别用了 。安装cygwin也需要注意。

② 安装 cygwin

下面几个功能要在安装时下载, 看如下链接

https://www.cnblogs.com/jpfss/p/11641045.html

基本思路还是根上述博客一致, 不过这里加了点自己遇到的问题,以及我的解决办法

③ 下载解压 freetype

④ 下载解压 8或更新版本的jdk并配置环境变量

⑤ 下载解压 openjdk8源码

2.环境配置

 jdk环境变量

这里我提供了一个已经编译好的openjdk下载, 直接解压配置环境变量。 

注意 坑 :1 JAVA_HOME 的配置直接用绝对路径 ,不要用 %java_openjdk%这种作为值。切记。当然,classpath 和path 依旧可以用 %JAVA_HOME%\lib  %JAVA_HOME%\bin 表示, 

最好用绝对路径。2  在path路径中会有这么一个值

请务必将其干掉,直接删除 ,上述两个问题如果不搞定,编译的时候就会报出跟jdk相关的错误。

3. 编译freetype

看如下链接吧。 有图文。

https://www.cnblogs.com/jpfss/p/11641045.html

4. 解压openjdk源码到自定义路径下

注意坑:不要有空格和中文

5.生成配置脚本

这一步直接按照上述链接中的做就可以。 只不过这里补充一下

提醒一下, 修改这些文件最好在配置configure命令执行之前做, 可以节省时间。免得再生成一次。 

在cygwin下,根目录是/cygdrive 

如果你的freetype放在了c:\tools\freetype 下 那么命令应该是这样的

./configure --with-freetype=/cygdrive/c/tools/freetype/ --with-target-bits=64 --enable-debug

这里上面博客中提到了两个比较常见的会遇到的问题。 修改方法也是有的。 

补充一下 版本太老的问题 : createjars.gmk  全局搜索 too old 之后, 可以直接修改里面的版本,将上面的1.7. 改成 3.2.0 保存也一样。

 6.编译 make all

在这一步之前, 找到 jkd\make\setup.gmk 

用文本编辑器打开他, 搜索一下 encoding   默认的是ascii  改成utf-8 保存 这样以后你修改代码,加点中文注释啊就不会出现编码问题了。

如果不出意外,编译就会成功。 大约十三分钟。如果在虚拟机里面会更久。

7.如何在自己的项目里引入自己下载编译的jdk 可以参照如下链接

滑动验证页面

注意坑 : 修改了源代码需要重新编译的时候 ,使用命令 make images ,并且不要执行make clean吧。 自己去路径下删除两个文件夹下的所有内容, 就可以了。 重新编译会节省大约4分钟的时间。应该是,记不清了。这俩文件就是openjdk根目录下\build\windows-x86_64-normal-server-fastdebug\jdk 下的objs和demoobjs,将这两个文件夹下的所有文件删除,然后编译通过。否则要么从头编译,清理所有。要么等着报错吧。

这里来了一个更严重的问题。 你打开任务管理器,会看到内存占用升高了,多了大约有4gb左右,而且无法被释放, 而且,你修改了源码后,再次编译jdk ,又增加4gb ,累计增加啊。 这个东西我没想到什么好的办法, 只能重启windows ,然后就释放了。 任务管理器你也看不到谁在占用。 这个如果哪位大哥有办法,可以留言指教小弟一下。 也正是因为如此,我觉得好鸡肋。如此下去,还怎么使用呢。Linux、下没试过。 可能没有这个问题。

2023改↓

云盘链接不知道为什么丢了几个文件,其实这些文件都可以在上述链接找到。过了这么久,我也找不到自己保存的了。

阿里云盘分享

<think> 嗯,用户想问编译安卓系统所需的电脑配置问题。看来用户是开发者或系统爱好者,需要知道硬件需求。 先从引用里梳理关键配置信息: - 引用1提到Ubuntu环境需要安装OpenJDK1.8/Git/Python3.7,但硬件要求未展开 - 引用4特别强调虚拟机内存不低于16GB(推荐18GB),SSD硬盘比机械硬盘体验好 - 引用2和3提到Android 13/Windows Qt开发环境,但配置细节较少 用户真正痛点可能是“避免编译失败”,所以需要强调内存和硬盘的硬性指标。根据官方文档补充: 1. CPU核心数直接影响编译速度,8核以上能显著减少等待时间(如16核编译AOSP约1小时 vs 4核可能5小时) 2. 硬盘空间不只是250GB——完整源码+构建产物可能占用400GB,尤其是多次编译或不同版本并行时 3. 内存16GB是底线,低于此可能OOM崩溃;swap空间建议额外32GB作为缓冲 用户可能忽略的点: - 散热(长时间满负载编译可能导致笔记本降频) - Linux环境优化(如EXT4文件系统比NTFS快,CCache配置) - 是否需要GPU?仅编译无需独显,但Android模拟器运行时需要 最后组织回复时分层:基础配置(必须满足)、推荐配置(高效)、扩展建议(如内核编译)。需提醒虚拟机方案的实际限制——物理机资源更可靠。 </think> 根据Android官方文档和开发实践,编译Android系统源码对电脑配置有较高要求,以下是关键配置建议: --- ### **一、核心硬件要求** 1. **处理器** - **最低**:4核64位CPU - **推荐**:8核以上(如Intel i7/i9或AMD Ryzen 7/9) - 编译耗时与核心数强相关(16核编译AOSP约1小时,4核需5小时以上)[^1][^4] 2. **内存** - **物理内存最低**:16GB - **推荐**:32GB+(Android 13+源码编译峰值内存占用超20GB) - **虚拟内存补充**:需配置Swap分区(建议32GB以上),避免OOM崩溃[^4] 3. **存储** - **硬盘类型**:**必须SSD**(机械硬盘编译可能卡顿甚至失败) - **空间需求**: - 源码仓库:250GB+(含.git元数据) - 完整构建产物:150GB+ - **总计预留**:**500GB以上**(建议1TB NVMe SSD)[^1][^4] --- ### **二、操作系统与环境** 1. **系统选择** - **官方推荐**:Ubuntu LTS(18.04/20.04/22.04) - 虚拟机方案需分配充足资源(如VMware给18GB内存+SSD存储)[^4] 2. **软件依赖** - **编译工具**: ```bash # Ubuntu示例 sudo apt install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev x11proto-core-dev libgl1-mesa-dev libxml2-utils ``` - **Java环境**:OpenJDK 8(Android 9-11)/ OpenJDK 11(Android 12+)[^1] - **Python**:3.6+(建议3.7+)[^1] --- ### **三、配置分级建议** | **组件** | **最低配置** | **高效编译配置** | **企业级配置** | |----------------|-------------------|---------------------|---------------------| | **CPU** | 4核(Intel i5) | 8核(Ryzen 7/i7) | 16核+(Threadripper)| | **内存** | 16GB + 32GB Swap | 32GB | 64GB+ ECC内存 | | **存储** | 500GB SATA SSD | 1TB NVMe SSD | 2TB RAID 0 NVMe | | **系统** | Ubuntu 18.04 | Ubuntu 22.04 | 专用Linux构建服务器 | --- ### **四、避指南** 1. **虚拟机限制** - 避免在Windows主机用虚拟机编译(磁盘I/O和内存易成瓶颈) - 若必须使用,需分配**独占SSD分区+18GB+内存**(如VMware直通磁盘)[^4] 2. **内核编译扩展** - 如需定制内核(如`kernel/`目录),需额外50GB空间和更高内存[^1] 3. **散热与稳定性** - 持续编译负载≈烤机测试,需确保散热良好(笔记本慎用) --- > 📌 **关键提示**:Android 13+对资源需求显著提升,低于推荐配置可能导致: > - 编译失败(内存不足) > - 耗时超24小时(CPU/磁盘瓶颈) > - 产物刷机异常(缓存错误) --- ### 相关问题 1. Android源码编译为何必须使用SSD而非机械硬盘? 2. 如何为Ubuntu系统优化Swap分区以提升编译稳定性? 3. 编译Android 13时出现`Out of Memory`错误该如何解决? 4. Windows主机通过虚拟机编译Android的可行性及性能损失? 5. 如何减少Android源码编译的硬盘占用空间?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值