• Ubuntu14.04搭建Android O编译环境


    一、搭建环境

    • 官方参考文档:

    1、代号、标签和版本号

    2、Factory Images

    3、Driver Binaries

    4、工具链

    •  软硬件版本:

    1、系统平台:I5-8500T+8G+1TUbuntu 14.04 LTS 64bit

    2、Python 2.6 - 2.7 (注意:Python 3不兼容)

    3、GNU Make 3.81 - 3.82

    4、Git 1.7 或更高版本

    5、OpenJDK 8

    6、SDK

    •  搭建步骤:

    1、安装ubuntu 14.04 LTS 操作系统,Ubuntu版本与安卓对应如下:

     

    2、安装JDK

    有关较低 Android 版本的预编译路径和安装说明,请参阅安装 JDK

    old-releases.ubuntu.com下载适用于 64 位架构的.deb软件包:

    下载完成后

    sha256sum {downloaded.deb file}    //检查SHA256值
    sudo apt-get update
    sudo dpkg -i {downloaded.deb file}
    sudo apt-get -f install            //解决缺少依赖项的问题

    对于以上 Ubuntu 版本,请通过运行以下命令来更新默认的 Java 版本:

    sudo update-alternatives --config java
    sudo update-alternatives --config javac

    3、安装所需的软件包 (Ubuntu 14.04)

    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 libgl1-mesa-dev libxml2-utils xsltproc unzip

     二、下载代码

    • 安装 Repo

    Repo 是一款工具,可让您在 Android 环境中更轻松地使用 Git。要详细了解 Repo,请参阅 Repo 命令参考资料

    要安装 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

    对于 1.21 版,Repo 的 SHA-1 校验和为 b8bd1804f432ecf1bab730949c82b93b0fc5fede

    对于 1.22 版,Repo 的 SHA-1 校验和为 da0514e484f74648a890c0467d61ca415379f791

    对于 1.23 版,Repo 的 SHA-256 校验和为 e147f0392686c40cfd7d5e6f332c6ee74c4eab4d24e2694b3b0a0c037bf51dc5

    • 初始化 Repo 客户端

    安装 Repo 后,设置您的客户端以访问 Android 源代码代码库:

    1、创建一个空目录来存放您的工作文件。如果您使用的是 MacOS,必须在区分大小写的文件系统中创建该目录。为其指定一个您喜欢的任意名称:

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY

    2、使用您的真实姓名和电子邮件地址配置 Git。要使用 Gerrit 代码审核工具,您需要一个与已注册的 Google 帐号关联的电子邮件地址。确保这是您可以接收邮件的有效地址。您在此处提供的姓名将显示在您提交的代码的提供方信息中。

    git config --global user.name "Your Name"
    git config --global user.email "you@example.com"

    3、运行repo init以获取最新版本的 Repo 及其最近的所有错误更正内容。您必须为清单指定一个网址,该网址用于指定 Android 源代码中包含的各个代码库将位于工作目录中的什么位置。

    repo init -u https://android.googlesource.com/platform/manifest

    要检出“master”以外的分支,请使用 -b 指定相应分支。要查看分支列表,请参阅源代码标记和编译版本

    repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

    初始化成功后,系统将显示一条消息,告诉您 Repo 已在工作目录中完成初始化。客户端目录中现在应包含一个 .repo 目录,清单等文件将保存在该目录下。

    • 下载 Android 源代码树

    1、要将 Android 源代码树从默认清单中指定的代码库下载到工作目录,请运行以下命令:

    repo sync

    Android 源代码文件将位于工作目录中对应的项目名称下。初始同步操作将需要 1 个小时或更长时间才能完成。要详细了解 repo sync 和其他 Repo 命令,请参阅开发部分。

    2、下载过程有可能失败,建议使用如下.sh脚本

    #!/bin/bash
    repo sync  -j6
    while [ $? = 1 ]; do  
            echo “======sync failed, re-sync again======”  
            sleep 3  
            repo sync  -j6
    done
    • 下载专有二进制文件

    1、下载

    对于运行带标记的 AOSP 版本分支的受支持设备,您可以从 Google 的驱动程序下载相关的官方二进制文件。有了这些二进制文件,您将有权使用那些采用非开源代码的其他硬件功能。要编译 AOSP 的 master 分支,请使用二进制文件预览。在针对某种设备编译 master 分支时,请使用适用于最新编号版本的二进制文件或具有最新日期的二进制文件。

    2、解压

    每组二进制文件都是压缩包中的一个自解压脚本。解压每个压缩包,从源代码树的根目录运行附带的自解压脚本,然后确认您同意附带的许可协议的条款。二进制文件及其对应的 Makefile 将会安装在源代码树的vendor/层次结构中。

    三、编译代码

    1、清理

    为了确保新安装的二进制文件在解压后会被适当考虑在内,请使用以下命令删除所有以前编译操作的已有输出:

    make clobber

    2、设置环境

    使用 envsetup.sh 脚本初始化环境。请注意,将source替换成.(一个点)可以省去一些字符,这种简写形式在文档中更为常用。

    source build/envsetup.sh
    //或
     . build/envsetup.sh

    3、选择目标

    使用lunch选择要编译的目标。确切的配置可作为参数进行传递。例如,以下命令表示针对模拟器进行完整编译,并且所有调试功能均处于启用状态。

    //例如
    lunch aosp_arm-eng

    如果您没有提供任何参数就运行命令,lunch 将提示您从菜单中选择一个目标。

    所有编译目标都采用 BUILD-BUILDTYPE 形式,其中 BUILD 是表示特定功能组合的代号。BUILDTYPE 是以下类型之一:

    要详细了解如何针对实际硬件进行编译以及如何在实际硬件上运行编译系统,请参阅运行编译系统

     4、编译代码

    本部分只是一个摘要,用于确保设置已完成。如需关于编译 Android 的详细说明,请参阅运行编译系统

    您可以使用make编译任何代码。GNU make可以借助-jN参数处理并行任务,通常使用的任务数 N 介于编译时所用计算机上硬件线程数的1-2倍之间。例如,在一台双核 E5520 计算机(2个CPU,每个CPU 4个内核,每个内核2个线程)上,要实现最快的编译速度,可以使用介于make -j16make -j32之间的命令。

    make -j4

    5、开始运行

    您可以在模拟器上运行自己的版本,也可以将其刷到设备上。请注意,因为您之前已使用 lunch 选择编译目标,因此很可能无法在编译目标之外的目标上运行您的编译系统。

    注意:请记得下载专有二进制文件,否则您的编译系统将无法在目标硬件上成功启动。如果您在此时下载二进制 Blob,则需要将其解压、make clobber 并重新编译。

    6、模拟Android设备

    emulator

    四、刷机

    要对设备进行刷机,您需要使用 fastboot(编译成功后,它应该会包含在您的路径中)。如需相关说明,请参阅对设备进行刷机

  • 相关阅读:
    【Azure 应用服务】由 Azure Functions runtime is unreachable 的错误消息推导出 ASYNC(异步)和 SYNC(同步)混用而引起ThreadPool耗尽问题
    【Azure API 管理】是否可以将Swagger 的API定义导入导Azure API Management中
    【Azure 应用服务】Azure Function 不能被触发
    【Azure 环境】Azure Key Vault (密钥保管库)中所保管的Keys, Secrets,Certificates是否可以实现数据粒度的权限控制呢?
    【Azure 事件中心】为应用程序网关(Application Gateway with WAF) 配置诊断日志,发送到事件中心
    【Azure 事件中心】azure-spring-cloud-stream-binder-eventhubs客户端组件问题, 实践消息非顺序可达
    【Azure API 管理】Azure API Management通过请求中的Path来限定其被访问的频率(如1秒一次)
    【Azure 环境】前端Web通过Azure AD获取Token时发生跨域问题(CORS Error)
    【Azure 应用服务】记一次Azure Spring Cloud 的部署错误 (az spring-cloud app deploy -g dev -s testdemo -n demo -p ./hellospring-0.0.1-SNAPSHOT.jar --->>> Failed to wait for deployment instances to be ready)
    【Azure 应用服务】App Service中抓取 Web Job 的 DUMP 办法
  • 原文地址:https://www.cnblogs.com/honkly/p/9291351.html
Copyright © 2020-2023  润新知