您的位置:澳门新葡萄京最大平台 > 动作小游戏 > Ubuntu下Android源码编译

Ubuntu下Android源码编译

发布时间:2019-11-15 13:42编辑:动作小游戏浏览(157)

    安装Ubuntu

    本人使用的windows系统,因此使用Oracle VM Virtual Box虚拟机安装Ubuntu系统,Ubuntu系统本人选择的是Ubuntu14.04。
    1、下载Oracle VM Virtual Box https://www.virtualbox.org/wiki/Downloads 根据各自的系统下载对应的版本。
    2、下载Ubuntu系统 http://www.ubuntu.com/download/desktop 本人选择的是 Ubuntu 14.04.4 LTS 64bit。
    3、如何使用Oracle VM Virtual Box安装Ubuntu,本人就不在做过多的赘述了,不明白者请查询相关资料。

    配置虚拟机共享文件夹

    为了使下载的Android源代码能在Windows中使用SourceInsight打开,所以需要创建Windows共享文件夹,在Ubuntu中让源代码下载在共享文件夹中,或者让Ubuntu共享代码下载的文件夹,在Windows中访问。本文以第一种方式为例阐述。

    Paste_Image.png

    此设置需要在关闭Ubuntu虚拟机的情况下设置。设置完成之后,打开Ubuntu系统发现没有权限去访问这个共享文件夹,解决方案是把当前用户加到一个叫vboxsf的组中,执行指令

    sudo usermod -a -G vboxsf <你的用户名>
    

    挂载的共享文件夹在/media

    Paste_Image.png

    这里本人使用了SecureCRTSSH远程连接了Ubuntu

    sudo apt-get install openssh-server // 安装SSH服务
    

    动作小游戏,安装必要的工具

    1、git版本控制工具

    sudo apt-get install git
    

    配置git

    git config --global user.email "<你的邮箱>"
    git config --global user.name "<你的名字>"
    

    2、curl,官方一点的说法就是开源的文件传输工具。类似迅雷,或者wget

    sudo apt-get install curl
    

    3、 安装repo,Android使用Git作为代码管理工具,开发了Gerrit进行代码审核以便更好的对代码进行集中式管理,还开发了Repo命令行工具,对Git部分命令封装,将百多个Git库有效的进行组织。
    新建一个bin目录

    mkdir ~/bin
    

    ~/bin目录添加到PATH中,编辑.bashrc在最后添加

    PATH=$PATH:~/bin
    

    下载repo

    curl https://storage-googleapis.lug.ustc.edu.cn/git-repo-downloads/repo > ~/bin/repo
    

    添加可执行权限

    chmod a+x ~/bin/repo
    

    使用repo下载Android系统源码

    1、cd到共享文件夹
    新建一个文件夹存放Android源码

    mkdir android && cd android
    

    初始化工作目录,默认为master 分支

    repo init -u  git://mirrors.ustc.edu.cn/aosp/platform/manifest
    

    初始化工作目录,并指定分支

    repo init -u  git://mirrors.ustc.edu.cn/aosp/platform/manifest -b <branch>
    

    branch可查看网址
    https://source.android.com/source/build-numbers.html#source-code-tags-and-builds [需要翻墙]

    附上一些较新的系统分支

    Build Branch Version
    M5C14J android-6.0.1_r31 Marshmallow
    LMY49J android-5.1.1_r37 Lollipop
    KTU84Q android-4.4.4_r2 KitKat

    如果想下拉并切换到Android 4.4.4,可以执行一下指令

    repo init -u  git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-4.4.4_r2
    

    如果在初始化的时候遇到以下问题

    Paste_Image.png

    这是一个Virtual Box为了安全禁止了链接的错误,解决方案如下,请在关闭虚拟机的情况下进行,
    Windows 下cmd进入到Virtual Box的安装目录

    Paste_Image.png

    键入

    VBoxManage setextradata <YOURVMNAME> VBoxInternal2/SharedFoldersEnableSymlinksCreate/<YOURSHAREFOLDERNAME> 1
    

    <YOURVMNAME> = 虚拟机的名字
    <YOURSHAREFOLDERNAME> = 设置共享的名字
    请注意大小写,例如

    Paste_Image.png

    Paste_Image.png

    Paste_Image.png

    设置完成后,查看有没有设置成功

    VBoxManage getextradata <YOURVMNAME>  enumerate  
    

    Paste_Image.png

    初始化之后,目录下面多了一个.repo隐藏文件夹,查看其初始大小

    Paste_Image.png

    2、下拉代码

    repo sync 
    

    repo sync 下载最新本地工作文件,同步 repository 中的代码。 可以指定需要更新的project , 如果不指定任何参数,会同步整个所有的项目。如果是第一次运行 repo sync, 则这个命令相当于 git clone,会把 repository 中的所有内容都拷贝到本地。如果不是第一次运行 repo sync, 则相当于 更新和自动合并动作,repo sync 会更新 .repo 下面的文件。 如果在merge 的过程中出现冲突, 这需要手动运行 git rebase --continue

    防止中途人离开出错,可以使用以下脚本

    #!/bin/bash
    echo "======start repo sync======"
    repo sync
    while [ $? == 1 ]; do
      echo "======sync failed, re-sync again======"
      sleep 3
      repo sync -j4
    done
    

    repo sync后面可以加个-j<数字>参数来加快仓库克隆,如:

    repo sync -j8 // 默认是4
    

    同步时间因人而异,我大概挂了两三个小时

    构建编译环境

    对于Gingerbread (2.3.x)之后的系统需要64位的操作系统,老的系统可以在32为的机器上编译
    1、安装JDK
    每个Android系统对于JDK的要求是不一样的,当前Android Open Source Project (AOSP)master分支上需要Java 8,在Ubuntu上可以安装OpenJDK。
    其他分支对于JDK的要求 Java JDK:
    Java 7: for Lollipop through Marshmallow
    Java 6: for Gingerbread through KitKat
    Java 5: for Cupcake through Froyo
    这里已编译KitKat为例,下载JDK6,由于官网下载需要填写账号信息,因此这里给出一个百度云的链接 http://pan.baidu.com/s/1nuo3XNj 下载完成后,记得添加到环境变量

    2、 下载编译所需工具
    Ubuntu系统版本是14.04的,具体的版本需要安装哪些工具可以查询 https://source.android.com/source/initializing.html

    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
    

    正式编译

    1、设置编译环境变量
    初始化环境变量

    source build/envsetup.sh
    

    或者

    . build/envsetup.sh
    

    2、选择编译目标

    lunch aosp_arm-eng
    

    类型说明

    user          limited access; suited for production
    userdebug     like "user" but with root access and debuggability; preferred for debugging
    eng         development configuration with additional debugging tools
    

    3、使用ccache
    加快编译的东西,建议大小 50-100G

    export USE_CCACHE=1
    export CCACHE_DIR=/<path_of_your_choice>/.ccache
    prebuilts/misc/linux-x86/ccache/ccache -M 50G
    

    4、编译

    make -j<你CPU的核心数乘以2> 如:make -j8
    

    经过漫长的编译时间

    5、模拟器运行
    直接在控制台运行,在编译的工程中此命令或自动添加到环境变量中

    emulator
    

    模拟器运行起来后,即可看到刚编译好的image

    官方编译教程 https://source.android.com/source/index.html [需翻墙]

    本文由澳门新葡萄京最大平台发布于动作小游戏,转载请注明出处:Ubuntu下Android源码编译

    关键词: