1 下载AOSP(Android)镜像

参考https://lug.ustc.edu.cn/wiki/mirrors/help/aosp

搭建编译环境

    笔者使用的操作系统时ubuntu16.04。参考https://source.android.com/source/initializing

$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
  zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \
  lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache \
  libgl1-mesa-dev libxml2-utils xsltproc unzip

    

安装 Repo

    参考https://source.android.com/source/downloading

    Repo 是一款工具,可让您在 Android 环境中更轻松地使用 Git。

    要安装 Repo,请执行以下操作:

  1. 确保主目录下有一个 bin/ 目录,并且该目录包含在路径中
    $ mkdir ~/bin
    $ PATH=~/bin:$PATH

     

  2. 下载 Repo 工具,并确保它可执行:
    $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    $ chmod a+x ~/bin/repo
    ## 如果上述 URL 不可访问,可以用下面的:
    ## curl https://storage-googleapis.proxy.ustclug.org/git-repo-downloads/repo > ~/bin/repo

     

初始同步

    第一次同步数据量特别大,如果网络不稳定,中间失败就要从头再来了。科大源 提供了打包的 AOSP 镜像,为一个 tar 包,大约 25G(android O,单文件 25G,注意磁盘格式要支持)。这样 就可以通过 HTTP 的方式下载,该方法支持断点续传。

  1.     创建源码目录
    $ mkdir Android
    $ cd Android

     

  2. 下载源码
    $ wget http://ipv6.mirrors.ustc.edu.cn/aosp-monthly/aosp-latest.tar # 这里使用ipv6下载初始化包
    $ tar -vxzf aosp-latest.tar
    $ cd aosp #这时ls什么也看不到,因为只有一个隐藏的.repo目录
    

        下载地址 http://mirrors.ustc.edu.cn/aosp-monthly/ 

        校园网可用ipv6下载不耗流量。http://ipv6.mirrors.ustc.edu.cn/aosp-monthly/

  3. 修改同步地址

    修改.repo/manifests.git/config,将
    url = https://android.googlesource.com/platform/manifest

    改成

    url = git://ipv6.mirrors.ustc.edu.cn/aosp/platform/manifest

    即可。

  4. 同步
    $ repo sync # 同步

    在执行repo sync时出错 error: .repo/manifests/: contains uncommitted changes
    网上的解决办法是:

    $ cd .repo/manifests
    $ git stash
    $ git clean -f -d

    但是我的还是未解决,最后找到一个回答

    git config core.filemode false

    (加入忽略文件权限的配置)
    再输入repo sync总算成功了,等待数十分钟的初始化,完成后得到aosp源码了

编译

    参考https://source.android.com/source/building

  1.  设置环境
    $ source build/envsetup.sh

     

  2. 选择目标

    $ lunch aosp_arm-eng

     

  3. 编译代码

    $ make -j4

     

模拟器运行

$ emulator

    emulator位于Android/aosp/prebuilts/android-emulator/linux-x86_64/目录下。从控制台打开需要将此目录加到系统PATH环境变量中,或者在当前控制台下执行

$ source build/envsetup.sh

    启动Android模拟器需要四个文件,它们分别是zImage、system.img、userdata.img和ramdisk.img,其中,前面一个是Linux内核镜像文件,而后面三个是Android系统镜像文件。如果不带任何参数来运行emulator命令,那么Android模拟器默认使用的zImage文件是位于源代码根目录下的子目录out/host/linux-x86/bin中的kernel-qemu文件,而默认使用的system.img、userdata.img和ramdisk.img文件则位于ANDROID_PRODUCT_OUT目录中。ANDROID_PRODUCT_OUT是一个环境变量,将它的值设置为Android源代码编译结果输出目录;如果不设置ANDROID_PRODUCT_OUT环境变量,就需要指定上述四个文件来启动Android模拟器,如下所示:

$ emulator -kernel ./prebuilt/android-arm/kernel/kernel-qemu -sysdir ./out/target/product/generic -system system.img -data userdata.img -ramdisk ramdisk.img

 

转载于:https://my.oschina.net/u/3472252/blog/988695

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值