美文网首页
Android源码下载与编译

Android源码下载与编译

作者: 码上就说 | 来源:发表于2018-08-26 21:48 被阅读64次

    一、准备工作

    1.1 软硬件环境

    1.1.1 硬件要求
    • 如果是 Android 2.3.x (Gingerbread) 及更高版本(包括 master 分支),需要使用 64 位环境。如果是较低的版本,则可以在 32 位系统中进行编译。
    • 如果要检出代码,至少需要 100GB 可用磁盘空间;如果要进行编译,则还需要 150GB。如果要进行多次编译,则需要更多空间。
    • 如果在虚拟机中运行 Linux,则至少需要 16GB 的 RAM/交换空间。

    建议用性能较好的电脑,这样编译什么的能快一点,不能很卡。

    1.1.2 软件要求
    • 建议采用Ubuntu 16.04版本,目前这个版本比较稳定,很多库都支持。
    • 安装openjdk-8
      sudo apt-get update
      sudo apt-get install openjdk-8-jdk
      如果本地有多个jdk版本,需要选择正确的jdk。
      sudo update-alternatives --config java
      sudo update-alternatives --config javac
    • 安装python2.x
      现在主要是python2.7,我本机是python2.7.12
    • 安装make软件
    • 安装git

    1.2 下载源码

    建议大家尽可能购买一个VPN服务,好用稳定,Google上面有非常丰富的学习资料。

    1.3 编译源码

    1.3.1 设置环境

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

    1.3.2 选择目标

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

    如果您没有提供任何参数就运行命令,lunch 将提示您从菜单中选择一个目标。
    所有编译目标都采用 BUILD-BUILDTYPE 形式,其中 BUILD 是表示特定功能组合的代号。BUILDTYPE 是以下类型之一:

    编译类型 使用情况
    user 权限受限,适合一般的用户使用环境
    userdebug 与“user”类似,但具有 root 权限和可调试性;是进行调试时的首选编译类型
    eng 具有额外调试工具的开发配置

    我们一般都会选择eng类型。因为权限最高,可以任意修改文件来调试。eng 版本会优先考虑平台负责工程师的工程生产力。eng 版本会关闭用于提供良好用户体验的各种优化。否则,eng 版本的运行方式将类似于 user 和 userdebug 版本,以便设备开发者看到代码在这些环境下的运行方式。

    1.3.3 编译代码

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

    1.4 开始运行

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

    • 使用fastboot刷机
      要对设备进行刷机,您需要使用 fastboot(编译成功后,它应该会包含在您的路径中)。
    • 模拟Android设备
      编译流程会自动将模拟器添加到您的路径中。要运行模拟器,请输入以下命令:emulator

    二、效率工具

    2.1 导入源码

    本文选择的源码IDE是Intellij工具,大家也可以选择其他的IDE,Android的源码非常庞大,直接导入很慢,所以千万不能直接导入。

    2.1.1 导入步骤

    1.在一个workspace中创建一个文件夹,例如aosp文件夹。


    创建aosp文件夹.png

    创建了aosp文件夹。
    2.然后打开intellij ide工具,直接Open 这个aosp文件夹,之后会在aosp文件夹中生成一个.idea隐藏的文件夹。


    aosp-.idea文件内容.png
    其中有3个文件,我们关注一下aosp.iml文件
    3.打开这个文件,内容如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <module type="JAVA_MODULE" version="4">
      <component name="NewModuleRootManager" inherit-compiler-output="true">
        <exclude-output />
        <content url="file://$MODULE_DIR$" />
        <orderEntry type="inheritedJdk" />
        <orderEntry type="sourceFolder" forTests="false" />
      </component>
    

    修改这个文件,内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <module type="JAVA_MODULE" version="4">
      <component name="NewModuleRootManager" inherit-compiler-output="true">
        <exclude-output />
        <content url="file://$MODULE_DIR$">
          <excludeFolder url="file://$MODULE_DIR$/aosp" />
        </content>
        <orderEntry type="inheritedJdk" />
        <orderEntry type="sourceFolder" forTests="false" />
      </component>
    

    4.再次使用intellij ide打开这个目录,如果想浏览哪个目录下的代码,可以
    右击目录--->Mark Directory as--->Source Root
    就可以正常浏览器和调用这个目录下的代码了。这样的好处不需要加载全部的代码,只需要架子啊自己选择的那一部分。

    2.1.2 intellij 快捷键设置
    2.1.3 intellij问题汇总
    • 文件查找功能失效
      默认情况下intellij idea的文件查找功能的快捷键是 Shift + Ctrl + N


      Go to File快捷键截图.png

      有时候这个功能会失效,Enter file 那么窗口输入文字显示红色,毫无反应。这有可能是之前强制关机导致部分IDEA file cache功能失效导致的。选择File -> Invalidate Caches / Restart可以清除缓存并重启,之后可以正常使用。

    2.2 画图工具

    • processon,一个非常好的在线作图工具,可以小组协作,用来画流程图和UML图非常好,下面做一个广告,分享一个注册链接:processon注册链接
    • StarUML,这个作图工具是用来画时序图的,虽然也能画其他的图,但是我觉得不太方便,我一般使用它来画时序图。

    相关文章

      网友评论

          本文标题:Android源码下载与编译

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