阅读更多

1顶
0踩

移动开发

转载新闻 Android 6.0 源代码编译实践

2015-11-24 10:29 by 副主编 mengyidan1988 评论(2) 有10302人浏览
前阵子去上海参加 Android 开发面试,被问及了 Android 的基本原理、常用组件背后的实现机制、设计模式等问题,我都回答地不好。面试时,老司机们常常问我对知识点“背后的实现代码有没有看?”。于是我就想着,回来要把 Android 代码下下来,有针对性地学习。

本文记述了我从下载源代码到编译成功、导入 Android Studio 的过程。我所使用的系统为 Mac OSX, Android 代码的分支是 android-6.0.0_r26。

代码的下载
Android 的代码我是、从AOSP - 清华大学TUNA 镜像源这个国内的镜像下载。下载代码的具体方法在官方文档 Downloading the SourceAOSP - 清华大学TUNA 镜像源 中都有记述,我就不再赘述。我选择下载的分支是 android-6.0.0_r26。

由于代码比较大,我使用我的下载机( Linux 系统)进行下载,待下载完成后导入 Mac OSX 进行后续操作。如何实现导入呢?

将代码文件夹拷贝到 ntfs 分区的移动硬盘失败。这是因为 ntfs 分区部分大小写,而代码目录中存在字母相同、大小写不同的文件,因此导入失败。(这一问题在后面 Mac OSX 中还会遇到。)

随后我对代码文件夹进行了压缩。压缩之后就能够随意拷贝了。在这里我推荐一种拷贝方式,就是直接用网线将两台机器相连对拷代码压缩包。这样速度非常快,也省得移动硬盘中转浪费时间。

Mac OSX 下的准备
压缩包拷过来之后,就该要解压、配置了。但是前文所说的大小写问题在这里又出现了。若将代码直接解压在 Mac 的文件系统中强硬编译将会报错。

创建映像文件
解决的方法是按照官方文档 Establishing a Build Environment 中的说明,建立一个区分大小写的映像文件,挂载后将代码解压进去,具体步骤不再赘述。

有一点需要强调的是,文档中创建的映像文件大小为 40GB,这在实际中不够,我编译完代码后就已经占用 46GB 了,因此我分配了 60GB 的大小。

JDK 版本
JDK 必须为 1.7,没装或只装了 1.8 的要去下一个 1.7 再装上。

mac_sdk_versions_supported 问题
我使用的系统版本为 EI Capitan,新于代码的配置文件,因此要修改配置文件。它位于 build/core/combo/mac_version.mk,其中有一个 mac_sdk_versions_supported 变量,修改为我目前的版本 10.11。

源代码的编译
参考官方指南 Building the System 先用 build/envsetup.sh 设置环境变量,再调用 lunch 命令选择构建目标。之后即执行 make -jN 进行编译。我用的参数为 -j4 编译了大约两个小时:
Creating filesystem with parameters:
    Size: 1610612736
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 8192
    Inode size: 256
    Journal blocks: 6144
    Label: system
    Blocks: 393216
    Block groups: 12
    Reserved block group size: 95
Created filesystem with 1452/98304 inodes and 101032/393216 blocks
Install system fs image: out/target/product/generic/system.img
out/target/product/generic/system.img+ maxsize=1644333504 blocksize=2112 total=1610612736 reserve=16610880
 
e[0;32m#### make completed successfully (01:56:47 (hh:mm:ss)) ####e[00m

将代码导入 Android Studio
代码目录中含有一个名为 idegen 的模块,它能够为 Android 代码生成 Android Studio 下的工程文件。

具体编译、使用方法可以参考这篇 使用Android Studio导入源码。大体过程是, idegen 是一个模块,要先使用 mmm 编译一下,之后在 idegen 的文件目录下有一个脚本,在代码根目录下执行这个脚本,它就会遍历代码目录生成工程文件,很方便。另外,这篇博客中还讲解了如何裁剪 android.iml,排除掉不需要加载到 Android Studio 到代码,有助于加快载入速度。

完成后,用 Android Studio 就像打开普通的工程一样,打开这个工程,经历一番加载与 indexing, Android 的代码就导入进来了。最后附上一张截图:



参考文献
在实践过程中,我还参考了一下文章。感谢这些兄弟分享的经验。


本文转自:JudyMaxiee's Blog
  • 大小: 155.2 KB
1
0
评论 共 2 条 请登录后发表评论
2 楼 d63hbz 2016-03-21 14:51
刚在VirtualBox里面下载源码,把磁盘写满了;正在新增加的虚拟磁盘里转移文件。
特意搜索源码大小来着,新磁盘分配64G,只保存源码了。

祝我好运,顺利编译!
1 楼 tao9435 2015-11-27 08:55
mark一下,以后可能会用着

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • android 6.0编译环境,MacOS下编译Android6.0源代码

    编译Android系统,只能在OS X环境下或者是Linux环境下,这篇文章,也是买Mac不久后写的,当时想顺便测试一下电脑的性能,编译Android系统要多久。整理笔记的时候发现,也就顺便发布出来。通过App store可以安装xcode...

  • linux编译android用哪个ubuntu好,使用Ubuntu 17.04编译Android 6.0源代码

    在安装了最新的Ubuntu 17.04后编译Android 6.0源代码的过程中,遇到了很多问题:1、openjdk无法支持jdk8,只能用回jdk72、还有很多未曾遇到的编译问题还陆陆续续遇到了各种各样的编译失败的信息,最后,参考Ubuntu ...

  • Mac上下载编译Android 6.0源代码详细教程

    Mac上下载编译Android 6.0源代码

  • Android系统6.0源代码编译过程分析(1)

    Android是一种基于 Linux 内核、自由开放源代码的操作系统, 由 Google 公司和开放手机联盟共同领导及开发, 主要使用于移动设备。首先就从系统源代码下载与编译过程分析开始。 2 编译环境搭建准备工作 (1) Ubuntu...

  • Android系统6.0源代码编译过程分析(2)之编译SDK及内核

    通过上篇文章《Android系统6.0源代码编译过程分析(1)》分析下载Android6.0系统源码和编译源码的过程,编译源码成功后运行模拟器,如图所示: 经过漫漫长路,终于把下载源码和编译源码搞定了,接下来,继续分析...

  • 使用ubuntu17.04编译Android 6.0源代码

    在安装了最新的ubuntu17.04后编译Android6.0源代码的过程中,遇到了很多问题:1、openjdk无法支持jdk8,只能用回jdk72、还有很多未曾遇到的编译问题还陆陆续续遇到了各种各样的编译失败的信息,最后,参考这两位博主...

  • Ubuntu16.04编译android6.0源代码

    Ubuntu16.04编译android6.0源代码

  • mac android 6.0 编译,Mac下设置Android源代码编译环境

    在Mac下编译Android最麻烦的就是设置Android的编译环境了,做完这一步基本上剩下的就是近乎傻瓜式的操作了.说起来也简单就三步,设置大小写敏感的文件系统、安装编译工具、设置文件系统同时能打开的数量.默认情况下...

  • Android6.0 反编译systemUI

    今天要反编译一个systemUI查看一些东西,本文是反编译Android 6.0的某手机的systemUI 准备工具: baksmali-2.1.3.jar smali-2.1.3.jar dex2jar-2.0  在csdn上我上传了该工具上传者:huml126 ,你也可以去...

  • Android6.0编译错误总结

    Android6.0编译错误总结,环境为ubuntu14.4,部分16.4也适用

  • 虚拟机编译android 慢,Ubuntu虚拟机编译Android6.0总结

    1 前言html昨天使用清华的源下载了android 6.0的源码,校园网能够达到10M的速度,爽!今天一大早就火烧眉毛地准备编译一个模拟器版本,看看效果,哪知居然耗费了一成天的时间才搞定...为了不其余人在一样的问题上...

  • [Android 编译(一)] Ubuntu 16.04 LTS 成功编译 Android 6.0 源码教程

    1 前言经过3天奋战,终于在Ubuntu 16.04上把Android 6.0的源码编译出来了,各种配置,各种error,各种爬坑,特写此博客记录爬坑经历。先上图,Ubuntu上编译完后成功运行模拟器,如图:2 编译环境 ... Androdi 6.0源

  • Android6.0源码编译

    相关资料 清华大学开源软件镜像站 ...官方源码下载文档https://source.android.com/setup/downloading repo命令参考资料 https://source.android.com/setup/using-repo.html 下载android 源码 首先下载repo ...

  • Android 6.0-14.0系统兼容

    1、新增运行时权限。 2、Android 6.0 版本删除了对 Apache HTTP 客户端的支持,要继续使用 Apache HTTP API,必须在build.gradle文件中声明以下编译时依赖项

  • Ubuntu16.04配置android6.0编译环境+模拟器启动

    https://source.android.google.cn/setup/develop android 开发文档 清华大学开源软件镜像站 https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ 中国科技大学镜像站 http://mirrors.ustc.edu.cn/help/aosp.html

  • Python项目-自动办公-59 PPT_pptx_在PPT中写入图片和表格.zip

    Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

  • Python项目-实例-20 快递查询.zip

    Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

  • 杂货产品检测43-YOLO(v5至v9)、CreateML、Paligemma、TFRecord、VOC数据集合集.rar

    杂货产品检测43-YOLO(v5至v9)、CreateML、Paligemma、TFRecord、VOC数据集合集.rarIPCV分配-V6 2024-01-21 6:10 PM ============================= *与您的团队在计算机视觉项目上合作 *收集和组织图像 *了解和搜索非结构化图像数据 *注释,创建数据集 *导出,训练和部署计算机视觉模型 *使用主动学习随着时间的推移改善数据集 对于最先进的计算机视觉培训笔记本,您可以与此数据集一起使用 该数据集包括7012张图像。 家庭废物以createMl格式注释。 将以下预处理应用于每个图像: *像素数据的自动取向(带有Exif-Arientation剥离) *调整大小为640x640(拉伸) 没有应用图像增强技术。

  • 绝对给力的源码,在线音乐播放器完整项目.zip

    Android 毕业设计,Android 毕业设计,小Android 程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

Global site tag (gtag.js) - Google Analytics