阅读更多

1顶
0踩

移动开发

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

2015-11-24 10:29 by 副主编 mengyidan1988 评论(2) 有10375人浏览
前阵子去上海参加 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

  • 《基于YOLOv8的八段锦练习指导系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

  • 大语言模型教育应用中的知识冲突挑战与应对策略

    内容概要:本文详细探讨了大语言模型(LLMs)在教育应用中遇到的知识冲突问题,包括概念定义、事实陈述和逻辑推理层面的认知不一致性。文章分析了知识冲突的技术成因,如训练数据噪声、参数化知识表示的局限、推理机制的缺陷、模型架构的不足及外部知识的偏差,并探讨了这些因素对教育应用的深远影响。文中提出了多维度的解决路径,如通过数据增强优化知识表示、利用提示强化上下文连贯、开发量规完善模型评估等。此外,文章从社会文化的宏观视角剖析了知识冲突的外部驱动因素,探讨如何在多元异质、动态演进的社会建构语境中构建开放进取、兼容融通的智能教育应用体系。 适合人群:从事教育技术研究的学者、教育工作者、人工智能研究人员和技术开发者。 使用场景及目标:①帮助教育工作者理解大语言模型在教育应用中的局限性;②为技术人员提供优化大语言模型教育应用的具体策略;③促进教育人工智能技术的可靠性、适应性和普及性提升。 其他说明:文章强调了知识冲突的有效化解不仅能够提升大语言模型在教育场景中的应用价值,还将为人工智能在更广泛领域的可持续发展奠定坚实基础。

  • 《基于YOLOv8的家具鉴定系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

  • 数据结构day1-思维导图顺序表

    数据结构day1-思维导图顺序表

Global site tag (gtag.js) - Google Analytics