1、AOSP源码下载 


AOSP:即为"Android Open-Source Project"的缩写,中文意为 :"安卓开放源代码项目"。

Google官方宣称:任何人都可以以任何目的使用Android源代码,我们也十分欢迎这样做。但是为了共享整个Android生态系统的应用程序,所有设备制造商必须参加“安卓兼容性计划”,但事实上......在中国很难实现兼容计划~!。

目前,我们可以下载Google原生未定制修改的AOSP版Android源码进行测试编译,但是一定要保证整套源码的健全性,否则无法编译通过。

正规手机厂商做ROM定制时,普遍的方案都是从源码定制厂商(如:高通、联发科、华为、Inter、Marvll等)拿到针对其硬件平台优化后的源码,进行二次的定制、修改、编译和发布(例如国内备受大家喜爱的: 小米 MIUI、魅族 Flyme、锤子 SmartisanOS、华为EMUI、一加 氢OS、OPPO ColorOS 等等)。

通常情况下,手机厂商都会名义上免费拿到配套源码,前提是他们的产品需要搭载配套的芯片(如 高通的 Snapdragon 骁龙系列、MTK 的Helio 系列、华为的麒麟等)。

这里提供一套Android 1.6 --- Android 6.0各个版本下载的网盘地址,供大家测试使用,其健全性还有待考究:

  链接: http://pan.baidu.com/s/1bmArk6           密码:m8fq

 

 2、上传源码到Ubuntu编译服务器 

首次向编译服务器上传初始化源码,一般是由管理员账户执行,较比简便的的方式就是使用FTP软件(如Xshell、FlashFXP、Xftp等)登陆服务器,直接拖进对应的目录。

3、 编译前的配置

编译前对编译环境的配置,是我们编译源码的必行之路。介于不同的源码定制厂商对环境配置可能会有一定的出入,因此,这里只是介绍几个基本通用的环境配置命令,供大家参考:

3.1在 .bashrc文件中添加相关属性:

                echo export USE_CCACE=1 >> ~/.bashrc

3.2为了提高编译效率,我们需要设置编译器高速缓存,执行以下命令:

                prebuilts/misc/linux-x86/ccache/ccache -M 50G

-M 50G 两个参数表示设置50G大小的空间作为编译缓存,这个数值可以根据自己的硬盘空间大小进行调整

3.3导入编译Android源码所需的环境变量和其它参数,运行以下命令:

                source build/envsetup.sh


3.4运行lunch命令选择编译目标

                 lunch      

      

这里输入 "1" 选择aosp_arm_eng

各种版本的不同之处,待补充。

 4、执行编译 

完成编译环境的配置之后,执行如下命令开始源码编译:

                sudo make -j8


执行make -j8, 8为同时编译的线程数,一般Google推荐执行源码编译的线程数 = CPU核心数x 2 + 2,比如4核,就推荐10线程编译,执行make –10。

关于cpu个数,可以用下面命令查看:

                cat /proc/cpuinfo

编译命令同配置命令一样,不同的定制厂商都会包装出各自不同的源码编译方式和命令。

由于使用虚拟机编译源码的时长超乎想象,所以,暂时不给大家提供编译结果的展示,后续,配置实体服务器编译正规源码后,补充贴图。

 5、刷机烧写ROM 

由于暂时没有正式可编译的定制源码和测试机/测试板,而且不同源码定制平台厂商会提供不同刷机工具FlashTool,因此,这步暂时不做过多的说明,后续再行补充,敬请谅解。

Android源码编译详解【四】:Android 6.0_源码的下载与编译相关推荐

  1. Android中mesure过程详解 (结合Android 4.0.4 最新源码)

    如何遍历并绘制View树?之前的文章Android中invalidate() 函数详解(结合Android 4.0.4 最新源码)中提到invalidate()最后会发起一个View树遍历的请求,并通 ...

  2. Android中layout过程详解 (结合Android 4.0.4 最新源码)

    上一篇文章Android中mesure过程详解 (结合Android 4.0.4 最新源码)介绍了View树的measure过程,相对与measure过程,本文介绍的layout过程要简单多了,正如l ...

  3. java tomcat源码_详解Tomcat系列(一)-从源码分析Tomcat的启动

    在整个Tomcat系列文章讲解之前, 我想说的是虽然整个Tomcat体系比较复杂, 但是Tomcat中的代码并不难读, 只要认真花点功夫, 一定能啃下来. 由于篇幅的原因, 很难把Tomcat所有的知 ...

  4. 源码泄露详解 一文了解常见源码泄露

    前言 这几天回顾做过的ctf题 看到好多题有源码泄露 本篇做个归纳总结 1..git源码泄露 在运行git init初始化代码库的时候,会在当前目录下面产生一个.git的隐藏文件夹 这个文件夹包含所有 ...

  5. android 弹性动画,SpringAnimation详解-Android

    SpringAnimation 类是最近(25.3.0版本)才添加在支持库中的一个类,它主要是为了让实现弹性动画变得更加方便,其实facebook在很久以前的Rebound库就实现了这样的动画,而且效 ...

  6. Android 系统(199)---Android事件分发机制详解

    Android事件分发机制详解 前言 Android事件分发机制是Android开发者必须了解的基础 网上有大量关于Android事件分发机制的文章,但存在一些问题:内容不全.思路不清晰.无源码分析. ...

  7. Android面试Hash原理详解二

    Hash系列目录 Android面试Hash原理详解一 Android面试Hash原理详解二 Android面试Hash常见算法 Android面试Hash算法案例 Android面试Hash原理详解 ...

  8. Android 源码编译详解【合集篇】

    Android 源码编译详解[一]:服务器硬件配置及机型推荐 做 Android系统开发多年,开发环境都是入职就搭建好了,入职时拿个账号密码就直接开始搞开发了,年初换了新公司,所有的项目都是刚起步,一 ...

  9. Android四大组件之bindService源码实现详解

        Android四大组件之bindService源码实现详解 Android四大组件源码实现详解系列博客目录: Android应用进程创建流程大揭秘 Android四大组件之bindServic ...

  10. 全志 android 编译,全志Android SDK编译详解(二)

    注意要确定安装了jdk) 第一步: cd  lichee; ./build.sh  -p sun5i_elite -k 3.0  (apt-get install uboot-mkimage需要安装m ...

最新文章

  1. 一条正确的Java职业生涯规划,顺利拿到offer
  2. 到底应该选择哪种Linux.NET的部署方式?
  3. pythontkinter在一块区域中绘图_用Python中的tkinter模块作图(续)
  4. python网络编程教学_python网络编程学习初步
  5. 计算机小技巧7,大神也未必知道的7个电脑小技巧,你会吗?
  6. 4.Flow Layout Pane
  7. python中常用的序列化模块_python 序列化,常用模块
  8. 《Linux编程》学习笔记 ·002【Linux常用工具GCC、GDB、Make】
  9. Codeforces Bubble Cup 8 - Finals [Online Mirror] B. Bribes lca
  10. robot framework接口自动化测试post请求
  11. Mac 下如何用命令行解压和压缩 rar 文件
  12. 史上最全的全国特产一览表,到哪就买当地最正宗的特产!!!
  13. 所谓的光辉岁月,并不是后来闪耀的日子,而是无人问津时你对梦想的偏执。
  14. 深入浅出傅里叶变换(目前看到的讲得最好的一篇文章)
  15. 如何快速实现增长App用户量?
  16. 进程(父进程、子进程、init进程)
  17. web前端 --- HTML标签详解
  18. 大数据开发个人学习规划
  19. ARM板上的华容道小游戏
  20. 水果FL studio20.8中文汉化翻译语言

热门文章

  1. 解析大数据思维的五大商业本质以及思维变革
  2. ASP.NET Web应用程序发布到IIS
  3. 怎么查找计算机蓝牙耳机,电脑搜索不到蓝牙耳机的解决方法
  4. python列表生成式
  5. Leetcode 1564 把箱子放进仓库里1
  6. 董付国老师6本Python系列教材被北大、复旦等近百所高校选作教材
  7. studing method for linux
  8. 同向放大器、反向放大器的区别
  9. java中long=后面为什么还要加个L
  10. 背包九讲之二:完全背包问题