You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu18.04编译Android-7.1.2_r36 AOSP失败求助

解决AOSP android-7.1.2_r36编译中snakeyaml的java.beans类找不到问题

从你的错误日志来看,核心问题是snakeyaml模块在编译时试图引用JDK的java.beans包下的类(比如IntrospectionException、Introspector),但AOSP的编译环境默认仅使用Android核心类库,不包含JDK的这些类。你的内存配置足够,所以可以排除内存不足的影响,下面是具体的修复方案:

方案一:修改snakeyaml的编译配置(推荐)

  1. 找到snakeyaml模块的Android.mk文件,路径通常为external/snakeyaml/Android.mk
  2. 打开文件后,在LOCAL_MODULE相关配置后添加以下编译参数:
    # 允许编译器访问JDK中的符号类,解决java.beans依赖问题
    LOCAL_JAVA_FLAGS += -XDignore.symbol.file=true
    # 依赖JDK相关类库
    LOCAL_JAVA_LIBRARIES += jdk-libs
    
  3. 保存文件后,清理旧的编译缓存:
    # 清理全局编译缓存
    make clean
    # 删除snakeyaml的中间生成文件
    rm -rf out/target/product/generic_x86_64/gen/JAVA_LIBRARIES/snakeyaml_intermediates/
    
  4. 重新初始化编译环境并开始编译:
    source build/envsetup.sh
    lunch aosp_x86_64-eng
    # 根据CPU核心数调整-j后的数字,比如-j16
    make -j16
    

方案二:确认JDK版本兼容性

虽然你使用的OpenJDK 1.8.0_212符合AOSP 7.1.2的要求,但可以再验证一下JDK的配置:

  • 执行java -version和javac -version确认版本一致
  • 确保没有其他版本的JDK干扰环境变量,可以用update-alternatives --config java检查默认JDK

问题根源说明

AOSP的编译环境为了保证生成的镜像符合Android的规范,默认会限制模块只能使用Android核心类库(bootclasspath),而java.beans属于JDK的非Android标准类,所以编译器找不到这些类。添加-XDignore.symbol.file=true参数会让编译器忽略Android的符号限制,允许访问JDK中的这些类,从而解决依赖问题。

内容的提问来源于stack exchange,提问作者Alan Xie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:48:45