美文网首页
ubuntu 18 编译 android 7 系统镜像

ubuntu 18 编译 android 7 系统镜像

作者: Asbefore如初_3142 | 来源:发表于2020-08-12 15:50 被阅读0次

    博客原文

    编译机器

    • ubuntu18 虚拟机
    • 内存:8G
    • swap:2G

    如果使用的系统,或者编译的源码文件不同,可能会遇到不一样的问题

    准备工作

    sudo apt-get update
    sudo apt-get install openjdk-8-jdk
    sudo apt-get install make
    

    加载编译环境:

    source build/envsetup.sh
    
    # 注意,这里需要自行更换
    lunch aosp_arm64-eng
    make -j2
    

    错误解决

    recipe for target 'ninja_wrapper' failed

    url: 网上解决方案

    • export LC_ALL=C

    fatal internal error, exec of /usr/bin/m4 failed

    • sudo apt-get install bison

    注意:即便安装 bison 后,也可能会依旧出现 bison 无法找到的错误,继续执行安装:

    • sudo apt-get install g++-multilib gcc-multilib lib32ncurses5-dev lib32readline-gplv2-dev lib32z1-dev

    上面是网上找的,在 ubuntu18 执行发现没有 lib32readline-gplv2-dev 这个包,应该是执行:

    • sudo apt-get install g++-multilib gcc-multilib lib32ncurses5-dev lib32z1-dev

    Try increasing heap size with java option '-Xmx'. Out of memory error

    内存不足错误(第一步是 export 设置内存,第二部是 kill 服务,再启动,此时是不需要 make clean 清理工作区,可以直接继续编译)

    export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
    
    ./prebuilts/sdk/tools/jack-admin kill-server
    ./prebuilts/sdk/tools/jack-admin start-server
    

    xmllint: command not found

    • sudo apt-get install libxml2-utils

    运行

    注意:由于启动android虚拟机要使用到硬件虚拟化,所以必须运行在 root 用户下,如果使用普通用户,则无法启用

    首先切换到 root用户:

    # 在虚拟机中必须切换到 su 用户,否则无法使用虚拟化
    # 特别注意!!! 否则无法在虚拟机中再运行 android 虚拟机
    sudo su
    

    然后重新加载环境并运行:

    source build/envsetup.sh
    # (选择刚才你设置的目标版本)
    lunch
    emulator
    

    如果运行出错:KVM is not installed on this machine (/dev/kvm is missing)

    需要先关机后,到 VMware 虚拟机选项卡 -> 设置 -> cpu 设置 -> 勾选右侧三个虚拟化选项,然后再从新执行 上面的命令

    以下是 Stack Overflow上的解决方案,但实际上我仅仅到 VMware 开启虚拟化即可,如果开启三个虚拟化选项后还是不行,可以尝试一下:
    原文

    • sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

    整理

    上面编译生成比较细碎,若要直接编译成功,参考以下步骤:

    使用 VMware 安装 ubuntu 18 镜像,然后到 虚拟机选项卡 -> 设置 -> cpu 设置 -> 勾选右侧三个虚拟化选项 (必须关机状态才可以修改选项)

    下载 android 7.1.2 的系统源码,并将压缩包复制到虚拟机中

    链接:https://pan.baidu.com/s/19PgQRT-rFFP9IBDPzZlhmA 
    提取码:0iu5
    

    ubuntu18 虚拟机安装依赖:

    sudo apt-get update
    sudo apt-get install openjdk-8-jdk
    sudo apt-get install make
    sudo apt-get install bison
    sudo apt-get install  g++-multilib gcc-multilib lib32ncurses5-dev lib32z1-dev
    sudo apt-get  install libxml2-utils
    

    设置环境变量:

    export LC_ALL=C
    export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
    

    将下载的 源码文件 解压缩, 然后 cd 进入解压缩后的目录

    在该目录下执行:

    source build/envsetup.sh
    lunch
    

    在执行 lunch 后,会出现一个列表,这里根据需求选择要编译的镜像类型,我选的是 6

    开始编译:

    make -j2
    

    等待编译成功后,开启虚拟机:

    sudo su
    source build/envsetup.sh
    lunch
    emulator
    

    这里执行 lunch 后选择的选项必须和编译时 lunch 的选择一样

    然后即可启动成功

    相关文章

      网友评论

          本文标题:ubuntu 18 编译 android 7 系统镜像

          本文链接:https://www.haomeiwen.com/subject/twqmdktx.html