博客
关于我
编译android源代码(aosp)
阅读量:591 次
发布时间:2019-03-12

本文共 1782 字,大约阅读时间需要 5 分钟。

安卓源码编 build 配置与问题解决

步骤1:下载源码并配置环境

按照官方文档,首先需要下载最新的安卓源码。在我的情况下,源码 archive 在 /home/koder/android-source-20151229。配置方面,我选择了 Ubuntu LTS 64 位系统,符合硬件配置要求。

1. 系统要求

  • 存储空间:源码体积约为 30-40GB,build完成后还需至少 100GB 的可用空间。
  • 系统版本:推荐使用 Ubuntu LTS 14.04 64 位,与官方文档一致。
  • 硬件注意事项:对于内存不足的问题,请参考后续内容,以下是我实现解决方案。

步骤2:执行 build 工作

在成功配置环境后,使用如下命令启动编 build 工作:

./prebuilts/android-emulator/emulator -sysdir $ANDROID_PRODUCT_OUT -system $ANDROID_PRODUCT_OUT/system.img -ramdisk $ANDROID_PRODUCT_OUT/ramdisk.img -data $ANDROID_PRODUCT_OUT/userdata.img -kernel /home/koder/android-source-20151229/prebuilts/qemu-arm/kernel/arm/kernel-qemu-armv7 -skin /home/koder/android-source-20151229/sdk/emulator/skins -memory 2048 -partition-size 2048 -skin WVGA800 -scale 0.7

环境变量设置

在运行 above 指令前,请确保以下环境变量已正确设置:

export JAVA_HOME="/home/koder/Documents/jdk1.8.0_65"export PATH="$JAVA_HOME/bin:$PATH"export CLASSPATH=".:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"export ANDROID_HOME="/home/koder/Documents/android-sdk-linux"export ANDROID_BUILD_OUT_HOST="/home/koder/android-source-20151229/out/host/linux-x86/bin"export ANDROID_PRODUCT_OUT="/home/koder/android-source-20151229/out/target/product/generic"export PATH="$ANDROID_HOME:$ANDROID_BUILD_OUT_HOST:$PATH"export export JAVA_HOME PATH CLASSPATH ANDROID_PRODUCT_OUT

内存不足问题解决方案

在编 build 过程中,可能会遇到内存不足的问题。以下是我采取的解决方法:

  • 增加 Swap 内存:由于系统内存仅 8GB,且运行于虚拟机内,我额外设置了 16GB 的 Swap 内存,使总可用内存变为 24GB。
  • 操作步骤:

    sudo suswapsize=24*1024dd if=/dev/zero of=/extra/swap0 bs=1M count=$((swapsize/1024))chmod 600 /extra/swap0vi /etc/fstab

    Swap 内存配置示例

    swap /extra/swap0  none swap defaults 0 0

    通过增加 Swap 内存,我成功解决了内存不足的问题,允许 build 完成。

    其他常见问题

  • 查看 ccache 状态:
  • watch -n1 -d prebuilts/misc/linux-x86/ccache/ccache -s
    1. 内存不足时的解决方案已如上所述。建议硬件配置至少 16GB 的内存,以支持 build 过程所需的资源。
    2. 通过以上方法,我顺利完成了编 build 工作,并为后续开发奠定了坚实基础。

    转载地址:http://bzsxz.baihongyu.com/

    你可能感兴趣的文章
    Java流程控制语句
    查看>>
    scratch3的作品(sb3格式的文件)怎么在移动端(手机)上进行播放呢
    查看>>
    wincc实现手机APP远程监控
    查看>>
    pandas DataFrame进行条件选取数据时出现SettingWithCopyWarning的解决方法
    查看>>
    3.6.X版本的OSG无法打开osgShadow/ShadowVolume的问题
    查看>>
    LSM树
    查看>>
    vue手写 头部 滑动按钮 点击查看更多,可折叠
    查看>>
    为什么 RTP 的视频的采样率是 90kHz ?
    查看>>
    IDEA快捷键CTRL+SHIFT+F无效
    查看>>
    IDEA 找不到 Persistence窗口解决办法
    查看>>
    ERROR: unable to bind listening socket for address...
    查看>>
    vagrant启动时提示 mount: unknown filesystem type 'vboxsf'
    查看>>
    海思SDK mkimage command not found
    查看>>
    QT5 退出窗口
    查看>>
    rk3399平台gt9xx触摸屏驱动分析
    查看>>
    X工厂 ERP (SBO) 2006 项目案例
    查看>>
    Android 吸顶布局
    查看>>
    python学习笔记2.3- 循环、判断
    查看>>
    U3D实现WebCamera显示
    查看>>
    SpringCloud第七章Ribbon负载均衡服务调用
    查看>>